【问题标题】:How do I get values out of specific selects and drop downs?如何从特定选择和下拉列表中获取值?
【发布时间】:2014-06-17 17:07:33
【问题描述】:

我的网站被用作帮助台。顶部有几个必填字段永远不会改变。然后下面有两个下拉菜单。第一个确定第二个选项中有哪些选项,第二个确定下面可以填写的所有字段。我有这一切工作。但是,如果我在底部添加一个按钮,我不知道如何从字段中获取所有文本。底部字段使用一些 switch 语句和 JavaScript 显示,使 div 可见。

这是一个示例 div:

 <div id="third_form_three" class="third_hidden" style="display:none;">
       <label id="company_label" class="stdFormLabel">
           Which Company:
        </label>
        <select id="company_select">
           <option value="apple">Apple</option>
           <option value="pear">Pear</option>
           <option value="banana">Banana</option>
         </select><br>
          Sales Org: <input type="text" name="sales_org" required><br>
          Sales Office: <input type="text" name="office" required><br> 
          Sales Group: <input type="text" name="group" required><br> 
          Customer Group: <input type="text" name="customer" required><br> 
          Sales District, if applicable: <input type="text" name="dist"><br> 
          <!-- ABILITY TO ATTACH A DOCUMENT -->
          <telerik:RadUpload ID="upl_cfsAttachment_four_one" ControlObjectsVisibility="None" InitialFileInputsCount="1" InputSize="40" runat="server" MaxFileInputsCount="1" required />
    </div>

我相信我的required 可能是错的,但我现在并不担心。这是我的 JavaScript 的开始

 function cfsButtonClick() {
            var array = [];
            var inputs = [];
            inputs.push(jQuery('.third_hidden:visible').contents().find('input'));
            inputs.each(function () {
                if (jQuery(this).val() != "")
                    array.push(jQuery(this).val());
            });
            alert(array[0]);
            alert(array.length);
        } 

有什么建议吗?如果不编写具有所有唯一 ID 的怪物 switch 语句,我很难将所有输入输出。从这个角度来看,我的第一个下拉菜单有 5 个选项,而我的第二个下拉菜单平均有 6 个。所以像我的示例一样有大约 30 个 div,它们大多都是独一无二的。

【问题讨论】:

  • jQuery .each() with input elements。你的代码应该是var inputs = jQuery('.third_hidden:visible').find('input');
  • 同时查看 jQuery.serialize() 方法。
  • @FelixKling 这与 Barmar 下面的帖子有什么不同吗?

标签: javascript jquery


【解决方案1】:

这一行:

inputs.push(jQuery('.third_hidden:visible').contents().find('input'));

应该是:

inputs = jQuery('.third_hidden:visible input');

您不需要.contents(),选择器会返回一个集合,您可以使用.each() 对其进行迭代。

你也可以简化:

JQuery(this).val()

到:

this.value

【讨论】:

  • 调试:参数[]长度0被调用者cfsButtonClick()数组[]长度0输入对象[输入属性值=“a”属性值=“null”,输入属性值=“b”属性值= "null", 输入属性值 = "c" 属性值 = "null", 输入属性值 = "d" 属性值 = "null"] 0 输入属性值 = "a" 属性值 = "null" 1 输入属性value = "b" 属性值 = "null" 2 输入属性值 = "c" 属性值 = "null" 3 输入属性值 = "d" 属性值 = "null" 长度 4
  • 抱歉,我不能输入更多内容。我提出了你的建议,当我去调试时,我通过警告线得到了这个
  • 我不确定我是否理解。您是否从 alert() 语句之一中收到错误消息?
  • 不抱歉。我正在调试以查看数组中的内容。在警报语句时,称为数组的数组长度为 0,输入有 4 个元素。元素 0 在火灾错误中表示“输入属性值 =”a”属性值 =“null”。以下 3 个元素中的每一个都表示相同,但​​ b、c、d
  • 这些是您在输入字段中输入的内容,对吧?我不确定为什么 array[] 没有将值放入其中。
猜你喜欢
  • 2014-10-03
  • 2016-09-15
  • 2015-07-03
  • 1970-01-01
  • 2011-07-06
  • 1970-01-01
  • 2015-02-09
  • 1970-01-01
相关资源
最近更新 更多