2011-09-18 94 views
1

我碰到過很多次(我不想在這裏使用'輸入類型按鈕')爲什麼哦'onclick'爲什麼沒有不調用函數check(); ?即使字段爲空,頁面仍然會提交。謝謝您的意見。'onclick'似乎沒有用'submit'按鈕調用函數

的Javascript:

function check() { 
    var name = document.getElementById('username_res'); 
    var passw_old = document.getElementById('passw_reset_old'); 
    var passw_new = document.getElementById('passw_reset'); 
    var button_res = document.getElementById('sub_res'); 

    if ((name.val() == "") && (passw_old.val().length == "") && (passw_new.val().length == "")) { 
     button_res.disabled = true; 
    } else { 
     button_res.disabled = false; 
    } 
} 

HTML:

<form id="passw_res" name="passw_res" method="post" action="pass_reset.php"> 
<fieldset style="width:300px"><br/> 
<legend id="pass_legend" align="left">Password reset</legend><br/> 
<input type="text" id="username_res" name="username_res" maxlength="50" /> 
<input type="password" id="passw_reset_old" name="passw_reset_old" maxlength="16"/> 
    <input type="password" id="passw_reset" name="passw_reset" maxlength="16" /> 
    <input type="submit" value="submit" id="sub_res" name="sub_res" onclick="check();"/> 
</fieldset> 
    </form> 

所以...頁面不應該空字段提交 - 爲什麼它提交?謝謝..

+3

你不能使用'onsubmit'事件的原因嗎? – FishBasketGordo

+0

使用'onsubmit'。並在函數中返回false;以防止在必要時提交。 –

回答

5

改變你的函數將此:

function check() { 

    var name = document.getElementById('username_res').value; 
    var passw_old = document.getElementById('passw_reset_old').value; 
    var passw_new = document.getElementById('passw_reset').value; 

    return ((name != '') && (passw_old != '') && (passw_new != '')); 

} 

你其實不必onclick事件更改爲的onsubmit ,只需將其更改爲onclick="return check();"即可。您需要將false返回到onclick事件以防止被觸發。

您可能想要添加一些視覺增強功能來指明未提交表單的原因。否則它會讓訪問者感到困惑。

+0

即將編輯,但沒有incase我錯過了一些東西。你的var是對象,但是你可以將它們與字符串進行比較。 –

+0

你說得對。回答更新,本地測試。 – CodeCaster

+0

謝謝!是的...似乎現在工作 - onclick ='返回檢查();'是正確的...我也改變了值(name.value ==「」)|| (....)改爲(name.val()==「」).. –

0

您需要將按鈕的類型從type =「submit」更改爲type =「button」,然後在check()函數中如果一切都通過,您需要獲取表單對象並提交它。

所以類似的document.getElementById( 'formID')提交()

+2

是的,對於沒有啓用javascript的訪問者來說很棒:他們將無法發佈表單。 – CodeCaster

+0

對不起,但我個人認爲,不使用JavaScript糟透了...你現在怎麼不使用JavaScript?我可以理解有人不想使用Flash(仍然想知道爲什麼'cuz Flash無論如何都可以)但JS?來吧...Facebook也一直在構建它;] –

0

你可以嘗試,而不是使用表單的onsubmit功能

<form id="passw_res" action="pass_reset.php" onSubmit="check()"> 
+0

謝謝大家! –

0

頁面提交,因爲沒有什麼在你的check()腳本,將來自阻止它。您的腳本僅在驗證時禁用該按鈕,但到那時單擊/提交已經發生,因此表單將提交。

因此,使用onsubmit='return check();',而不是禁用,根據您的驗證返回true或false。如果check()返回false,那將'停止'提交操作,如果返回true,則會提交提交。

1

你正試圖在stand javascript變量上調用jquery方法。

試試這個

if ((name.value == "") && (passw_old.value == "") && (passw_new.value == "")) { 
    return false; 
} else { 
    return true; 
} 

你提交按鈕應該是

<input type="submit" value="submit" id="sub_res" name="sub_res" onclick="return check();"/> 
+0

謝謝 - 真我在這裏混合了jQuery ... –

相關問題