[英]Form with radio buttons and one input field. Calculate the value depending on radio button selcted
[英]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">
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">
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>
您可能想给输入文本字段一个不同于单选输入的名称,然后将文本字段的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.