0

我尝试了以下操作,但它向服务器返回了两条数据。这是我的网关的问题,我收到错误消息。

我将其用于我的一项尝试:

 <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 'installments' 的两个实例。

是否有一种 javascript 方法来测试输入字段,如果输入了一个数字,则使用 id(s) 禁用额外的单选按钮,使其无法发送任何数据?还是有更好的方法来做到这一点?


解决了

我找到了答案&在这里

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

2 回答 2

1

您可能希望为输入文本字段提供与单选输入不同的名称,然后将文本字段的 POST 作为与 HTTP 请求中的单选按钮分开的变量处理。此外,给第二个单选输入一个值,例如“其他”,以便您知道处理相关的文本输入。

于 2013-02-21T20:32:25.363 回答
0

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

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

我们可以使用onchange事件来做到这一点:

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

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

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

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

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

重要 我在这里有点懒惰并输入了访问表单元素内容的最简单方法。这将适用于大多数(可能是所有主要的)浏览器,但这不是应该的方式。正确的方法是先访问表单,然后从表单元素访问字段。要做到这一点,您应该阅读这篇关于设置表单元素值的文章。

我希望这很有用。

于 2013-02-22T22:30:20.080 回答