繁体   English   中英

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

[英]radio buttons + input field for one of them

我尝试了以下操作,但是它将两段数据返回到服务器。 这是我的网关出现的问题,但出现错误。

我将其用于以下尝试之一:

 <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 

对于变数“分期付款”,无论是99还是估算的数字,我只能得到一个退货。 我尝试了使用JS进行此操作的各种方法,并允许用户以相同的结果进行选择-发送了var'installments'的两个实例。

有没有一种JavaScript方法可以测试输入字段,如果输入了数字,然后使用ID禁用额外的单选按钮,使其无法发送任何数据? 还是有更好的方法来做到这一点?


解决了

我找到了答案,这是

<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>

您可能想给输入文本字段一个不同于单选输入的名称,然后将文本字段的POST作为HTTP请求中单选按钮的一个单独变量处理。 同样,给第二个单选输入一个值,例如“ other”,这样您就知道要处理相关的文本输入。

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

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

我们可以使用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>

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

重要说明我在这里有点懒,并输入了访问表单元素内容的最简单方法。 这将在大多数(可能是所有主要的)浏览器上运行,但并非应如此。 正确的方法是先访问表单,然后从表单元素访问字段。 要正确执行此操作,您应该阅读这篇有关设置表单元素值的文章。

我希望这是有用的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM