【问题标题】:Make input text fields changeable and selectable (toggled with checkbox)使输入文本字段可更改和可选择(使用复选框切换)
【发布时间】:2012-01-17 10:17:58
【问题描述】:

请看我当前的 html sn-p 如下。我正在尝试使 html 输入字段可更改和可选择。所以我可以更改输入文本字段中颜色的值,该字段使用相应的复选框进行切换。单击提交按钮时,仅提交所选颜色的信息。 我当前的 html 正确显示内容,但它会提交两种颜色信息。尽管只选择了一个复选框。

<form id="myForm">         
  <input type="checkbox" name="color1" value="blue_check" />  
  Color1: <input type="text" name="blue" value="120" /></br>  
  <input type="checkbox" name="color2" value="red_check" /> 
  Color2: <input type="text" name="red" value="160" /></br>   
  <input type="submit" value="OK" />    
</form>

或点击:http://jsfiddle.net/4xDFK/56/

提前谢谢你。

【问题讨论】:

    标签: javascript html forms input checkbox


    【解决方案1】:

    使用 jQuery:

    $(document).ready(function() {
        $('#myForm :checkbox').each(function() {
            $(this).next("input").attr('disabled',!$(this).is(':checked'));
        });
    });
    
    $('#myForm :checkbox').change(function() {
        $(this).next("input").attr('disabled',!$(this).is(':checked'));
    });
    

    由于您没有提到使用 JavaScript 或 JS 框架,这里建议使用纯 html 表单和服务器端评估来解决它:

    1. 给复选框起一个有说服力的名称,例如“check_blue”+“check_red”
    2. 在服务器端,仅在选中相应复选框时才处理颜色

    如果您只想根据复选框状态提交或允许填写输入,则必须使用 JavaScript(并且可能应该在您的问题中或至少作为标签提及)。

    【讨论】:

    • 您好,感谢 Connum 的回答,我已按照您的指示添加了 javaScript 标记。
    • 假设使用jQuery没问题,我更新了上面的答案。
    • 感谢 Connum 的快速回复,您能否进一步解释一下 "$(this).next("input").attr('disabled',$(this).is(':检查'));"究竟是做什么的?为了应用这条线,我需要在我的 html sn-p 中进行一些更改吗?请参阅:jsfiddle.net/4xDFK/56,再次感谢。
    • 只要其中一个复选框发生变化,就会根据复选框的状态启用或禁用下一个输入字段。此 sn-p 无需任何更改即可与您的标记一起使用,只需在 jsfiddle 中试用即可。
    • 嗨,Connum,刚刚尝试了sn-p,结果相反:检查color1时,提交color2的值,有什么想法吗?谢谢。
    【解决方案2】:

    如果未选中相关复选框,您可以在提交时删除元素。

    how to prevent form from sending some fields we don't want to send

    【讨论】:

    • 感谢您的回复,我确实尝试了您的解决方案,它也奏效了。
    【解决方案3】:

    当您点击提交按钮时,所有输入值都会提交。所以你需要做的是在服务器端处理这个。为复选框命名并检查它们的值,谷歌搜索“在 XXXX 中处理复选框”,其中 XXXX 是您的服务器端语言。

    <h1> Colors Information </h1>
    <form id="myForm">
      <input type="checkbox" name="choice1" value="choice1"/>
      Color1: <input type="text" name="blue" value="120" /></br>
      <input type="checkbox" name="choice2" value="choice2"/>
      Color2: <input type="text" name="red" value="160" /></br>    
      <input type="submit" value="OK" />
    </form>
    

    然后您可以检查哪些复选框被选中,并相应地查看您是否应该考虑相应的文本输入字段。

    【讨论】:

    • 感谢 Mohamed,我刚刚按照您的指示升级了复选框 linez。
    猜你喜欢
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多