【问题标题】:How to check if the selected value of drop-down is set to No and Text-Box is blank using JavaScript如何使用 JavaScript 检查下拉列表的选定值是否设置为 No 并且 Text-Box 是否为空白
【发布时间】:2014-01-19 17:30:49
【问题描述】:

我在 gridview 中有下拉菜单和文本框,我正在尝试检查下拉菜单的选定值是否设置为“否”并且在文本框中没有输入 cmets 然后我想显示消息。只要下拉列表的选定值设置为“否”,该要求就必须在文本框中输入 cmets。我的问题是,即使下拉设置为“是”或者当下拉设置为“否”时提供了 cmets,我也会收到消息。代码如下:

    function validate() {
        var flag = false;
        var gridView = document.getElementById('<%= GridView1.ClientID %>');

        for (var i = 1; i < gridView.rows.length; i++) {
            var ddl = gridView.rows[i].getElementsByTagName('Select');
            var areas = gridView.rows[i].getElementsByTagName('textarea');
            if (ddl != null && ddl.length > 1 && ddl[0] != null && areas != null && areas.length > 1 && areas[0] != null) {
                if (areas[0].type == "textarea" && ddl[0].type == "select-one") {
                    var txtval = areas[0].value;
                    var txtddl = ddl[0].value;
                    if (txtddl.value == "No" && (txtval == "" || txtval == null)) {

                        flag = false;
                        break;
                    }
                    else {
                        flag = true

                    }
                }
            }
        }
        if (!flag) {
            alert('Please note that comments is required if drop down is set to No.  Thanks');
            areas[i].focus();
        }
        return flag;
    }

</script>

【问题讨论】:

  • gridview里面有两个DropdownLists吗?
  • 你好,这和你过去帮助我的那个很相似。不,我只有一个下拉菜单。谢谢
  • 请看我的回答。

标签: javascript jquery html asp.net gridview


【解决方案1】:

你可以这样做:

<script>
    function validate() {
        var flag = false;
        var gridView = document.getElementById('<%= GridView1.ClientID %>');

        for (var i = 1; i < gridView.rows.length; i++) {
            var selects = gridView.rows[i].getElementsByTagName('select');
            //var inputs = gridView.rows[i].getElementsByTagName('input');
            var areas = gridView.rows[i].getElementsByTagName('textarea');
            if (selects != null && areas != null) {
                if (areas[0].type == "textarea") {
                    var txtval = areas[0].value;
                    var selectval = selects[0].value;
                    if (selectval == "No" && (txtval == "" || txtval == null)) {

                        flag = false;
                        break;
                    }
                    else {
                        flag = true;
                    }
                }
            }
        }
        if (!flag) {
            alert('Please enter comments.  Thanks');

        }
        return flag;
    }
</script>

【讨论】:

  • afzalulh,这很好用,但我有几个问题:我认为它缺少“;”在标志=真之后。我正在检查的文本框是第一个,我认为它应该是区域 [0]。你能确认我的假设是否正确吗?我不确定它为什么会起作用..
  • 好收获!我已经修复了脚本。
【解决方案2】:

试试这个:

$('#select').on('change', function () {

   var text = $(this).find(":selected").text();
   var textBox = $(this).parent().filter('input [name="InputName"]');
   if(text == "no" && textBox.val() =="")
   {
      \\display your message
   }
});

【讨论】:

  • 这可以在 GridView 中使用吗?第二个问题是我在gridview中有几个其他文本框,那么它如何知道要检查哪个文本框?谢谢
  • 如果#select 和文本框都有相同的父级,那么你得到#select 父级,然后你可以从父级获取文本框。
猜你喜欢
  • 1970-01-01
  • 2013-05-01
  • 2021-07-02
  • 2012-06-17
  • 2017-06-11
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
  • 1970-01-01
相关资源
最近更新 更多