& # 39; onclick # 39;似乎没有调用'submit'按钮

'onclick' doesn't seem to call a function with 'submit' button

本文关键字:按钮 调用 submit onclick      更新时间:2023-09-26

我已经遇到过很多次了(我不想在这里使用'input type button')为什么哦为什么'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>

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

把你的函数改成这样:

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来阻止它被触发。

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

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

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

比如document。getelementbyid ('formID')。submit()

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

喜欢这里。

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

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

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

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