【问题标题】:concatenating select menus into a single form input将选择菜单连接到单个表单输入中
【发布时间】:2013-09-27 00:08:37
【问题描述】:

我有一个文本输入如下:

<input class="input-large" form="form" type="text" name="product_data[product]" id="product_description_product" value="{$product_data.product}" />

很遗憾,我希望在此字段中输入的信息非常具体。我能想到的最佳解决方案是提供 3 个带有一系列选项的下拉菜单。

我可以根据需要编辑 HTML 并添加 JavaScript,但无法编辑表单处理脚本或数据库,因此我需要从 3 个选择菜单中返回的值需要连接成单个表单字段值.

你觉得怎么样?

我想我几乎拥有它,但它不起作用。我会复制整个表格,但它很长,希望这是唯一需要的部分

<form>
    <input form="form" type="hidden" name="product_data[product]" id="product_description_product" value="{$product_data.product}" />

    <script type="text/javascript">
        $(all_three_select_tags).change(function(){
    concatenated_string = $(#product_description_product_1).val() + $(#product_description_product_2).val() + $(#product_description_product_3).val();
    $("#product_description_product").val(concatenated_string);
    })
    </script>
    <select id="product_description_product_1">
        <optgroup label="Box size">
            <option value="Extra small">Extra small</option>
            <option value="Small">Small</option>
            <option value="Medium">Medium</option>
            <option value="Large">Large</option>
            <option value="Extra Large">Extra Large</option>
        </optgroup>
    </select>
    <select id="product_description_product_2">
        <optgroup label="Speciality">
            <option value="organic">organic</option>
            <option value="seasonal">seasonal</option>
            <option value="locally grown">locally grown</option>
            <option value="exotic">exotic</option>
            <option value="gourmet">gourmet</option>
        </optgroup>
    </select>
    <select id="product_description_product_3">
        <optgroup label="Type of box">
            <option value="veg box">veg box</option>
            <option value="fruit box">fruit box</option>
            <option value="fruit &amp; veg box">fruit &amp; veg box</option>
        </optgroup>
    </select>
</form>

【问题讨论】:

    标签: javascript jquery forms field string-concatenation


    【解决方案1】:

    我将尝试根据您提供的代码进行更新。你的脚本标签内容应该是这样的:

    <script type='text/javascript'>
        $("#product_description_product_1, #product_description_product_2, #product_description_product_3").change(function(){
            concatenated_string = $("#product_description_product_1").val() + $("#product_description_product_2").val() + $("#product_description_product_3").val();
            $("#product_description_product").val(concatenated_string);
        })
    </script>
    

    此外,您的隐藏字段标记应该看起来像这样(我假设第二个代码块的第一行是隐藏字段):

    <input type='hidden' value='' id="product_description_product">
    

    这是一个 jsfiddle 和这个例子以及 http://jsfiddle.net/eNNZX/

    请记住,id 为“temp_display”的 div 不是必需的,只有这样您才能在每次更改后看到值。

    这样,只要更改任何选择,隐藏的输入就会更新为所有 3 的串联版本。然后,当您提交页面时,只需查看引用隐藏输入的参数以获得所需的值。

    希望这会有所帮助!

    【讨论】:

    • 我想我明白你虽然我不是一个javascripter。要让它知道从哪里提取数据,我只需使用 # 将 first_select 更改为我想要的选择的 id
    • 我已经更新了代码,我认为这就像复制/粘贴一样。所以第一个 onchange 事件将绑定到所有 3 个选择标签。在其中,我们将所有 3 个连接在一起的值。然后我们将“my_hidden_​​input”设置为等于连接的字符串。如果你在你的 js 控制台中输入: $("#my_hidden_​​input").val() 这应该返回你正在寻找的值。请记住,在至少 1 个选择标签被更改之前,这不会完成,因此您可能希望在 document.ready 函数中放置类似的内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 2014-12-23
    • 1970-01-01
    • 2010-09-27
    相关资源
    最近更新 更多