知道为什么表单提交空时没有显示警报?

时间:2014-01-26 21:12:48

标签: javascript

大家好,我们试图进行表格检查但是我用javascript做的最基本的事情是没有任何想法我做错了什么?

HTML:

<form onsubmit= "return formCheck();" method="POST" action="check.php"  >
name: <input type="text" name="name" onchange="valid_name.checked = true;">
<input  type="checkbox" disabled="disabled" name="valid_name">
<input type="submit" value="Submit">
</form>

的javascript:

function formCheck() {
    if(this.name.value == ""){
        alert("You forgot to enter your name");
        this.name.focus();
        return false;
    }
}

jsfiddle

http://jsfiddle.net/Lawwf/rRNBy/

提前感谢。

4 个答案:

答案 0 :(得分:2)

小提琴有些不妥之处:

  • return formCheck();周围没有引号 - 虽然此处给出的代码包含它们。
  • 您的JS代码配置为在加载时执行,这使得formCheck无法访问全局上下文(需要将设置更改为“no wrap”)。

代码有问题:

  • 您的事件处理程序this内部是window对象,而不是表单。窗口已经有name属性,这与您尝试执行的操作相冲突。不要以这种方式工作,而是考虑使用DOM搜索方法来获取元素,例如getElementByIdquerySelectorAll等。

<强> Updated working example

function formCheck() {
    var el = document.querySelectorAll("input[name=name]")[0];
    if(el.value == ""){
        alert("Je bent vergeten je naam in te vullen");
        el.focus();
        return false;
    }   
}

答案 1 :(得分:0)

在很多其他事情中:

  1. 在对象上下文之外使用“this”将引发错误。
  2. 如果没有错误,你错过了一个回复。
  3. 在你的jsFiddle中你错过了引用事件的手
  4. ler strings

    试试这个:

    ...
    <form onsubmit="return formCheck(this);" method="POST" action="check.php"  >
    ...
    

    然后:

    function formCheck(myForm) {
        if(myForm.name.value == ""){
            alert("You forgot to enter your name");
            myForm.name.focus();
            return false;
        }
        return true;
    }
    

答案 2 :(得分:0)

<form onSubmit= "formCheck()" type="POST" action="#" >
    <label for="name">Name:</label>
    <input type="text" name="name" id="name_input" onBlur="formCheck()">
    <input  type="checkbox" id="valid_name" name="valid_name" disabled>
    <button type="submit" value="Submit">Submit</button>
 </form>

function formCheck() {
  var val = document.getElementById('name_input').value;
    if(val!='')
      document.getElementById('valid_name').checked = true; 
    else      
      alert('Looks like you forgot your name!');        
}

小提琴:http://jsfiddle.net/dTc63/1/

(再次点击运行以另一种方式尝试。在jsfiddle中POST不能正常工作。)

答案 3 :(得分:0)

只需将 this 关键字传递给formCheck函数即可。 HTML:

<form onsubmit= "return formCheck(this);" method="POST" action="check.php"  >
name: <input type="text" name="name" onchange="valid_name.checked = true;">
<input  type="checkbox" disabled="disabled" name="valid_name">
<input type="submit" value="Submit">
</form>

的javascript:

function formCheck(frm) {
    if(frm.name.value == ""){
        alert("You forgot to enter your name");
        frm.name.focus();
        return false;
    }
}