“onclick”似乎没有使用“提交”按钮调用函数

时间:2011-09-18 21:05:19

标签: php javascript html

我遇到过很多次(我不想在这里使用'输入类型按钮')为什么'onclick'不会调用函数check(); ?即使字段为空,页面仍会提交。感谢您的评论。

使用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>

所以...页面不应该在空字段上提交 - 为什么要提交?感谢..

6 个答案:

答案 0 :(得分: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();"即可。您需要向onclick事件返回false以防止它被触发。

您可能需要添加一些视觉增强功能,以指明未提交表单的原因。否则会让参观者感到困惑。

答案 1 :(得分:1)

你试图在一个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();"/>

答案 2 :(得分:0)

您需要将按钮的类型从type =“submit”更改为type =“button”,然后在check()函数中,如果一切都通过,则需要获取表单对象并提交它。

类似于document.getElementById('formID')。submit()

答案 3 :(得分:0)

您需要返回false以避免事件传播。

here

答案 4 :(得分:0)

您可以尝试使用表单的onSubmit函数

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

答案 5 :(得分:0)

页面提交是因为您的check()脚本中没有任何内容可以阻止它。您的脚本仅在验证时禁用按钮,但到那时点击/提交已经发生,因此表单将提交。

因此请使用onsubmit='return check();',而不是禁用,根据您的验证返回true或false。如果check()返回false,那将“停止”提交操作,如果返回true,则将继续提交。