0

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

我有可以按我想要的方式工作的 html,但是对于 jQuery,我遇到了 elseif 和 else 的问题。

我想说:
-如果输入名称仍然是名称,则缺少消息名称(这似乎可行)
-如果输入地址仍然是地址,则缺少消息地址(不起作用)
-如果输入地址和输入的名称不是地址或名称提交表单(它不起作用)

我在这里有一个例子: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>

查询:

$(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;
        }

    });

})
4

2 回答 2

1

您正在设置一个值“名称”

尝试使用这个:

$('#name').val() == "name"

如果语句在你里面

于 2012-10-16T14:55:02.113 回答
0

您的原始代码存在一些问题:

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

下面通过使用一个简单的标志来解决这些问题,并分别检查每个字段。提交调用也已修复。

试试这个: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();
        }

    });
});

此外 - 只是关于代码气味的说明 - 您应该尝试在脚本中始终使用单引号或双引号。您已经使用了两者都不理想(但会起作用)。

于 2012-10-16T14:59:20.097 回答