1

我已经创建了一个注册表单,现在我正在尝试对字段进行空验证。所有字段都位于一个表内,例如:

<table border="0" cellspacing="5" width="100%">
        <tr>
            <td width="50%" valign="top">
                <span id="ctl00_PageBody_lblFname">Prénom</span>
                <strong><font color="#FF0000">*</font></strong><br />
                <input name="ctl00$PageBody$txtFname" type="text" id="ctl00_PageBody_txtFname" rel="First Name" />

                <br />

                <span id="ctl00_PageBody_lblLname">Nom</span>
                <strong><font color="#FF0000">*</font></strong><br />
                <input name="ctl00$PageBody$txtLname" type="text" id="ctl00_PageBody_txtLname" rel="Last Name" />
             </td>
         </tr>
</table>

现在使用 jquery,我正在尝试创建一个通用函数,它遍历所有文本框,如果它们为空,它会显示一条消息,提及字段名称:

        var Msg = "Please provide values for :";
        var nullFieldTracked = 'false';

        $('input[type="text"], select').each(function () {
            if (this.value == '' && this.hasAttribute("rel")) {
                nullFieldTracked = 'true';
                Msg += '\n - ' + $(this).attr('rel');
            }
        });
        if (nullFieldTracked == 'true') {
            alert(Msg);
            return false;
        }

代码就像魅力一样,我在文本框中添加了一个“rel”属性以读取字段名称,但是

现在需求发生了变化,我需要以多种语言启动这个网站,因此它将从资源文件中读取属性,并且 asp.net 不会为“rel”标签创建元资源,所以我在想从最近的跨度读取字段名称,但无法跟踪。

请帮助使用 Jquery。

提前非常感谢。

4

3 回答 3

1

从最近的跨度中检索值

$(this).prevAll("span").first().text()
于 2012-06-21T13:23:11.937 回答
0

不确定是否可以在 .net 的文本字段中添加数据属性

如果是,您可以将跨度的 id 存储在data将具有的输入属性中。每个文本字段都应将跨度 id 保存在他的数据属性中,例如

                <input name="ctl00$PageBody$txtFname" type="text" id="ctl00_PageBody_txtFname" rel="First Name" data-error-span = '#span1'/>

现在在你的 JS 中

$('input[type="text"], select').each(function () {
        if (this.value == '' && this.hasAttribute("rel")) {
            nullFieldTracked = 'true';
            Msg += '\n - ' + $($(this).data('error-span')).val();
        }
    });

另一种选择可能是将错误存储在数据属性中,然后 JS 将是

Msg += '\n - ' +  $(this).data('error-message');

这看起来也可读

真棒Rails :)

于 2012-06-21T13:34:04.550 回答
0

使用 .closest() 这会给出最近的选择器元素。

于 2012-06-22T04:36:22.033 回答