【问题标题】:Form Submit Validating Dynamic # of Dropdowns表单提交验证动态下拉列表数
【发布时间】:2014-04-19 20:54:31
【问题描述】:

我有一个表单,它通过下拉菜单显示动态数量的行。每个下拉列表的 id 为“ReasonCd#”,末尾的数字从 0 递增 - 相应地与行号一致。每个下拉菜单都有一个默认选择“选择编号”,其值为 NULL。

我想在表单中添加提交验证。如何提醒用户是否有任何动态数量的下拉菜单选择了默认选项?

<select id='ReasonCd" . $counter . "'>
<option disabled='disabled' selected='selected' value=''>Select Number</option>
<option>blah</option>
</select>

我尝试创建自己的 jQuery,但不幸的是我无法让它工作。

(当我的提交按钮被点击时)

$("#submitButton").click(function() {
$('[id^=ReasonCd]').filter(function(){
    if($(this).text() == "Select Number"){
        alert('Please Select a Number!!!');
    }
});

});

【问题讨论】:

  • 你能做一个jsfiddle.net 的例子吗?
  • 这里:jsfiddle.net/u74fg/2 我添加了 3 个下拉列表来表示 3 行,但请记住,由于 PHP 从 SQL 数据库中提取,我的行号是动态的。我想让提交按钮提醒用户默认文本仍处于选中状态。
  • +1.. 有用的问题也帮助了我...边解决边学习..

标签: javascript php jquery html forms


【解决方案1】:

检查选择的选项:

    $("#submitButton").click(function(e) {
        $('[id^=ReasonCd] option:selected').filter(function(){
        if($(this).text() == "Select Number"){
            alert('Please Select a Number!!!');
            e.preventDefault(); //cancel postback
            return false; //exit of .filter

        }
       });
    });

或者:

$('form').submit(function(e) {
    $('[id^=ReasonCd] option:selected').each(function(){
    if($(this).text() == "Select Number"){
        alert('Please Select a Number!!!');
        e.preventDefault();
        return false;
    }
});
});

With multiple dropdowns

Live Demo Update

【讨论】:

  • 太棒了!有没有办法只显示一次消息并阻止提交?谢谢!
  • 它似乎不起作用。 The form still submits when there's a default value is selected.
  • 这太棒了!你真棒。警报后仍在提交。我会一直玩下去,试着弄清楚。
  • 为什么不在演示中添加一个表单(就像提问者所做的那样)并证明它被阻止提交..
  • 完美!非常感谢您的帮助。谢谢!
【解决方案2】:

Here is complete working demo

您需要遍历每个下拉菜单中的所有选项,ID 为 ^=ReasonCd,并在第一个发现无效 (selectedopts.eq(i).text() == 'Select Number') 时返回 false。

注意:返回范围必须是提交函数

$("#submitButton").click(function()
{
    selectedopts = $('[id^=ReasonCd] option:selected');
    for(i=0;i<selectedopts.length;i++)
    {
        if(selectedopts.eq(i).text() == 'Select Number')
        {
            alert('Please Select a Number!!!');
            return false;
        }
    }
});

【讨论】:

  • 非常有趣。我开始学习很多关于 jQuery 语法的知识,我很高兴你向我展示了一种熟悉的方法来创建具有最大长度变量的工作 for 循环。谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-30
  • 2015-12-06
  • 2011-01-27
相关资源
最近更新 更多