使用jQuery在输入中进行表单验证

时间:2012-10-16 14:50:56

标签: jquery forms

我正在尝试验证表单,但没有标签,同一输入中的所有消息。

我的html可以按照我的意愿运行,但是使用jQuery我遇到了elseif和其他问题。

我想说:
- 如果输入名称仍为名称,则表示消息名称丢失(这似乎有效)
- 如果输入地址仍然是地址,则消息地址丢失(不起作用)
- 如果输入地址和输入名称不是地址或名称提交表格(它不起作用)

我在这里有一个例子:http://jsfiddle.net/4ervc/20/

HTML:

<form id="form" action="#">
    <input type="text" name="name" id="name" value="name" 
    onfocus="if (this.value=='name'||'name is missing') this.value = '';" 
    onblur="if (this.value=='') this.value = 'name';"  />
    <br />

    <input type="text" name="address" id="address" value="address" 
    onfocus="if (this.value=='address'||'address is missing') this.value = '';" 
    onblur="if (this.value=='') this.value = 'address';"  />
    <br />

    <input type="submit" name="submit" id="submit">
</form>

JQUERY:

$(function(){

    $("#form").submit(function (e) {

        if ($('#name').val("name")) {
            e.preventDefault();
            $('#name').val("name is missing");
        }else if ($('#address').val("address")) {
            e.preventDefault();
            $('#address').val("address is missing");
        }else{
             $("#form").submit;
        }

    });

})

2 个答案:

答案 0 :(得分:1)

您正在设置值“name”

尝试使用它:

  

$('#name')。val()==“name”

在你的内部if语句

答案 1 :(得分:0)

原始代码存在一些问题:

  1. 您的提交电话$("#form").submit;不正确,应为$("#form").submit();
  2. 因为您使用的是if-elseif逻辑,所以如果名称字段正确,则验证仅验证地址字段。它应该每次都验证所有字段。
  3. 您应该使用$('#name').val() === 'name'而不是$('#name').val('name')
  4. 来比较字段值

    下面通过使用一个简单的标志来修复这些事情,并分别检查每个字段。提交电话也是固定的。

    试试这个:http://jsfiddle.net/4ervc/21/

    $(function() {
    
        $("#form").submit(function(e) {
    
            //assume valid form
            var valid = true;
            if ($('#name').val() === 'name') {
                e.preventDefault();
                $('#name').val('name is missing');
                valid = false;
            }
    
            if ($('#address').val() === 'address') {
                e.preventDefault();
                $('#address').val('address is missing');
                valid = false;
            }
    
            if (valid) {
                $('#form').submit();
            }
    
        });
    });
    

    另外 - 只是关于代码气味的注释 - 您应该尝试通过脚本一致地使用单引号或双引号。你已经使用了一些不理想的东西(但会起作用)。