单选按钮+其中一个的输入字段

时间:2013-02-21 20:23:38

标签: javascript

我尝试了以下操作,但它将两个数据返回给服务器。这对我的网关来说是一个问题,我收到了一个错误。

我将此用于我的一次尝试:

 <script type="text/javascript">
 if( $('#other).is('):selected') ) 
 {
   // user wants to enter own value
 $('[name="installments"]").not('[type="text"]').attr('name', '') // remove all      
  values apart from the entered text.
 }
 </script>

<body>
<FORM ACTION="http://www.cs.tut.fi/cgi-bin/run/~jkorpela/echo.cgi" METHOD="POST">
<br><br>
<input type="radio" name="installments" id="r1" checked="checked" value="99">
&nbsp;Open-Ended - I can stop them via email at any time.<br>
<label for="installments">number of payments</label><br>
<input type="radio" name="installments" id="other" value="Enter Custom.."><br>
<input type="text" name="installments" value="" maxlength="4" size="4">
 <br><br><br>
<input type="submit" name="btnSubmit" value="Submit" />
</form>

返回 -

installments 99 
installments (empty) 

installments Enter Custom.. 
installments 5 

我只能为var'分期付款'返回一个99或他们估算的数字。 我已经尝试了各种使用JS的方法,并允许用户选择相同的结果 - 发送两个var'分期付款的实例。

是否有一种javascript方式来测试输入字段,如果输入了一个数字,那么禁用id(s)额外的单选按钮,以便它不能发送任何数据?或者有更好的方法吗?


解决

我找到了答案&amp;这是

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
 $(function() {
  $('#user_input').change(function() {
  $('#use_user_input').val($(this).val());
  });
 });
</script>

和Html在这里:

 Total number of payments...</span><br>
 <input type="radio" name="installments" checked value="99"> &nbsp;
        Open-Ended -
 <input id="use_user_input" type="radio" name="installments" value=""> &nbsp;
        limited number of payments - &nbsp;
<input id="user_input" type="text" value="" maxlength="4" size="4"></span>

2 个答案:

答案 0 :(得分:1)

您希望为输入文本字段提供与无线电输入不同的名称,然后将文本字段的POST作为单独的变量处理,与HTTP请求中的单选按钮相对应。另外,为第二个无线电输入提供一个值,例如“其他”,以便您知道如何处理相关的文本输入。

答案 1 :(得分:0)

如果您只能从表单中接收一个字段,则需要在用户填写表单时更改表单。目前,如果用户选择单选按钮分隔的值之一,则表单可用。我收集的问题是,即使用户选择填写文本框的“其他”选项,单选按钮的状态也会覆盖文本字段的值。

解决方案是使用在用户更改文本框内容时触发的脚本。此脚本将读取文本框的值,并将该值分配给“其他”单选按钮。

我们可以使用onchange事件执行此操作:

<input id="otherRadio" type="radio" name="installments" value="" /><br />
<input id="otherText" type="text" value="" maxlength="4" size="4" onchange="applyOtherOption()" />

如果您现在尝试这样做,当您更改文本字段的值时,它将在您的页面上导致javascript错误。这是因为浏览器无法找到名为applyOtherOption的javascript函数。我们现在改变一下:

<script type="text/javascript">
    function applyOtherOption() {
        var textField = document.getElementById("otherText");
        var radioField = document.getElementById("otherRadio");

        radioField.value = textField.value;
    }
</script>

结果是“其他”单选按钮的值始终更改为用户输入到文本字段中的任何内容,如果选择了此单选,则这是与表单一起发送的内容。

重要 我在这里有点懒,并输入了访问表单元素内容的最简单方法。这将适用于大多数(可能是所有主流)浏览器,但它不是应该这样做的方式。正确的方法是首先访问表单,然后从表单元素访问字段。要做得对,您应该阅读这篇文章on setting the value of form elements

我希望这很有用。