我尝试了以下操作,但它将两个数据返回给服务器。这对我的网关来说是一个问题,我收到了一个错误。
我将此用于我的一次尝试:
<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">
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">
Open-Ended -
<input id="use_user_input" type="radio" name="installments" value="">
limited number of payments -
<input id="user_input" type="text" value="" maxlength="4" size="4"></span>
答案 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。
我希望这很有用。