我使用JavaScript函数获取发布金额。我可以获得amount
的唯一方法是从表单中解析item_name
输入变量。它适用于Chrome,而不适用于IE。顺便说一句,它使用PHP和MySQL挂钩到PayPal。
function ReadForm(obj1) {
var holeObjectValue = obj1.item_name.value;
var splitFields = holeObjectValue.split("$");
obj1.amount.value = splitFields[1];
}

<form action="" method="post" name="form1" target="_self">
<input name="item_name" type="radio" onclick="ReadForm(this.form, false);" value="Please Select from above $ 100" checked="checked" />Please Select from above $ 100<br />
<input name="item_name" type="radio" onclick="ReadForm(this.form, false);" value="Please Select from above $ 200" checked="checked" />Please Select from above $ 200<br />
<input name="amount" type="hidden" value="" />
<input type="submit" value="submit" />
</form>
&#13;
答案 0 :(得分:0)
将您的代码更改为此代码,它也适用于IE:
HTML:
<form action="" method="post" name="form1" target="_self">
<input id="item100" name="item_name" type="radio" onclick="ReadForm();"
value="100" checked="checked" />Please Select from above $ 100<br />
<input id="item200" name="item_name" type="radio" onclick="ReadForm();"
value="200" checked="checked" />Please Select from above $ 200<br />
<input name="amount" type="hidden" value="" />
<input type="submit" value="submit" />
</form>
Javascript:
function ReadForm() {
var selectedValue = 0;
if(document.getElementById('item100').checked)
selectedValue = document.getElementById('item100').value;
if(document.getElementById('item200').checked)
selectedValue = document.getElementById('item200').value;
console.log(selectedValue);
}
答案 1 :(得分:0)
表单正在运行。但是在页面源中,无法看到分配给变量的值。
如果您在分配前parseInt(splitFields[1])
,那将会很好。
检查以下代码。我将方法更改为GET
和action="xyz.php"
(Somefile)。
当您点击Submit
时,您会在浏览器的网址框中看到GET
请求的参数。正在设置隐藏值。
<form action="xyz.php" method="get" name="form1" target="_self">
<input name="item_name" type="radio" onclick="ReadForm(this.form, false);" value="Please Select from above $ 100" checked="checked" />Please Select from above $ 100<br />
<input name="item_name" type="radio" onclick="ReadForm(this.form, false);" value="Please Select from above $ 200" checked="checked" />Please Select from above $ 200<br />
<input name="amount" type="hidden" value="" />
<input type="submit" value="submit" />
</form>
我希望这可以帮到你!
答案 2 :(得分:0)
有一些事情出了问题。在:
var holeObjectValue = obj1.item_name.value;
因为有两个具有相同名称的单选按钮,它返回一个没有 vlaue 属性的NodeList。要获取所选无线电的值,您可以循环播放无线电或使用选择器:
var selected = obj1.querySelector('input[name=item_name]:checked');
在您的标记中,您已选中了两个单选按钮。单选按钮的性质一次只能检查一个,因此从其中一个中删除已检查的属性。
最后,您不需要解析该值以获得您想要的值,因此请将值设置为“200”或其他值,例如
<input name="item_name" type="radio" onclick="ReadForm(this.form, false);"
value="200">Please Select from above $ 200<br>
但是,许多正在使用的浏览器不支持这种复杂的选择器,因此循环解决方案更兼容(并且编写起来不多),所以:
function ReadForm(obj1) {
var radios = obj1.item_name;
var holeObjectValue = null;
for (var i = 0, iLen = radios.length; i < iLen; i++) {
if (radios[i].checked) {
holeObjectValue = radios[i].value;
break;
}
}
if (!holeObjectValue) return;
obj1.amount.value = holeObjectValue;
}
<form action="" method="post" name="form1" target="_self"
onsubmit="return false"> <!-- prevent submit for testing -->
<input name="item_name" type="radio" onclick="ReadForm(this.form, false);"
value="100" checked>Please Select from above $ 100<br>
<input name="item_name" type="radio" onclick="ReadForm(this.form, false);"
value="200" >Please Select from above $ 200<br>
<input name="amount" value=""> <!-- show for testing -->
<input type="submit">
</form>
您遇到的最后一个问题是默认选择了一个广播,但如果用户未点击广播,则该值不会写入金额字段。我会留给你解决。