2011-07-25 33 views
5

Mam problem z niektórymi funkcjami Ajax.TypeError: obiekt nie jest funkcją, kiedy jest!

Mam jedno menu rozwijane, które musi zaktualizować rekord po zmianie opcji. Oto urywek javascript:

function changeResponsibleParty(selectObj, targetDiv){ 
    var idx = selectObj.selectedIndex; 
    var which = selectObj.options[idx].value; 
    target = document.getElementById(targetDiv); 
    target.value = which; 
    document.forms["changeResponsibleParty"].submit(); 
} 

I HTML:

<form name="changeResponsibleParty" action="javascript:changeResponsiblePartyAjax('project_todos');" method="post" style="display:inline;"> 

<input type="hidden" name="todo_id" id="todo_id_15" value="15" /> 
<input type="hidden" name="project_id" id="project_id_15" value="2" /> 
<input type="hidden" name="user_id" id="user_id_15" value="" /> 

<select name="user_id_pick" id="user_id_pick_15" onchange="changeResponsibleParty(this, 'user_id_15');" style="border:0;"> 

<option value="0">Anyone</option> 
<option value="1" selected="selected">Allen McCabe</option> 
<option value="2">Thomas Martinez</option> 
</select> 
</form> 

używam funkcji zaktualizować ukrytego elementu wejściowego, ponieważ z jakiegoś powodu, znacznik publikujących 1 niezależnie od tego, który opcja wybrałem (1 to mój user_id, które ustawione jako wybrany, jeżeli wartość rekord w bazie to 1.

czy ktoś może zobaczyć, co jest nie tak tutaj?

+1

Czy istnieje powód, dla którego nie używasz czegoś takiego jak jQuery? Ułatwi to ten proces. –

+7

Dowiedz się, dlaczego masz problem z kodem HTML, zamiast pisać kiszkę JavaScript, która jest całkowicie niepotrzebna i wymaga włączonej obsługi JS ... nie, on nie potrzebuje jQuery ani żadnego JavaScript w ogóle, aby przesłać prosty formularz z nielogiczne! –

+1

Czy błąd podaje numer wiersza, a jeśli tak, jaki jest kod w tym wierszu? – qw3n

Odpowiedz

13

użyć changeResponsibleParty jako nazwa formularza, a także jako nazwa funkcji, która spowoduje konflikty. Zmień nazwę jednego z nich.

+0

Po prostu próbowałem tego i zadziałało, dziękuję. – AVProgrammer

+1

Gdyby to zadziałało, byłoby mi miło potwierdzić odpowiedź. – Sparkup

+0

Uważam, że prawie niemożliwe jest uwierzyć, że to działa. Formularz nie ma prawdziwego adresu URL dla "submit()" do pracy! W jaki sposób przeglądarka powinna dowiedzieć się, co zrobić, gdy wywołasz "submit()"? – Pointy

Powiązane problemy