我有一个简单的PHP表单,如下所示:
<?php
if(isset($_POST['myform']))
// email...
else
// display form
Run Code Online (Sandbox Code Playgroud)
问题是如果我在提交表单后刷新页面,它会被提交两次.我怎样才能防止这种情况发生?
什么是最简洁的方法,我可以使一个复选框自动提交它所属的Wicket表单?我根本不想要包含提交按钮.该复选框由域对象中的布尔字段(在本例中为"帐户")支持.
省略了不相关部分的简化示例:
EntityModel<Account> accModel = new EntityModel<Account>(Account.class, id);
PropertyModel<Boolean> model = new PropertyModel<Boolean>(accModel, "enabled");
CheckBox checkBox = new CheckBox("cb", model);
Form form = new Form("form");
form.add(checkBox);
add(form);
Run Code Online (Sandbox Code Playgroud)
HTML:
<form wicket:id="form" id="form" action="">
<input wicket:id="cb" type="checkbox" />
</form>
Run Code Online (Sandbox Code Playgroud)
编辑:为了澄清,我的目标只是在切换复选框时更改域对象的字段( - >数据库中的值).任何(干净,简单)实现这一目标的方法都可以.(我不确定你是否真的需要这个表格.)
我将bean绑定到jsp页面中的inputtext UI元素的整数属性.
最初在渲染它们时,此整数属性的默认值为null.
现在,当我在不更改此inputtext字段的情况下提交表单时,即使ui文本字段为空,此字段也会在bean中设置为整数值零.
因为我想跟踪字段的更改并仅更新配置文件中更改的那些字段,但这给我带来了问题,因为它导致对所有整数字段的更新.
我正在使用jsf 1.2
我是一个相当新的使用JavaScript,这是我到目前为止:
<!-- this is to disable the submit button and then re-enable it after 3 sec -->
<script type="text/javascript">
function enable()
{
var x = document.LAYOUTFORM.getElementById("create_button");
setTimeout(x.removeAttribute("disabled"), 3000);
}
</script>
Run Code Online (Sandbox Code Playgroud)
对于按钮我有这个:
<INPUT TYPE="SUBMIT" VALUE=" Create PDF " class="FORMBUTTON" ID="create_button" onclick="javascript:this.disabled=true;javascript:enable();">
Run Code Online (Sandbox Code Playgroud)
我已经搞砸了好几个小时,你们大多数人都会看着它,立即知道出了什么问题.我的表单ID和名称是LAYOUTFORM.谁能告诉我这里做错了什么?
对于奖励积分,我还希望按钮的文本在禁用时暂时更改为"正在创建...",然后再次返回到创建PDF.
我正在现有的Web应用程序上实现AngularJS,它需要像没有AngularJS那样的常见HTTP POST.
这似乎比我预期的要困难.页面URL是动态生成的,无法使用PHP进行回显.我尝试使用jQuery修改表单操作,但这似乎也不起作用.
以正常方式提交表格真的不可能吗?这就是我的正常形式:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form method="post">
<input type="text" name="txt">
<input type="submit" name="submit">
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这与AngularJS的形式相同:
<!DOCTYPE html>
<html ng-app>
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
</head>
<body>
<form method="post">
<input type="text" name="txt">
<input type="submit" name="submit">
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
第一个表单执行常规表单发布,第二个表单不执行.根据http://docs.angularjs.org/api/ng.directive:form这是设计的,我可以在表单中提供"action"参数.将它留空是行不通的,并且使用jQuery修改它似乎也不起作用.
我有一张表格submit_tag.
我想要设置内容值并使用js弹出窗口确认意图.
以下两者都不会调用确认对话框,但会对link_to标记执行此操作.我究竟做错了什么?
f.submit "Do this", data: {confirm: 'Are you sure?'}
f.submit "Do this", confirm: 'Are you sure?'
f.submit confirm: 'Are you sure?'
Run Code Online (Sandbox Code Playgroud) 在我的HTML中,我有多个表单(文本输入,单选按钮,复选框和选择)和一个按钮.我想填写所有这些表格并将值发送到我的PHP文件.现在我正试图从文本输入中提交值并选择,但此时我仍处于困境.
我有一个js提交文件:
submitForms = function(){
document.getElementById("form1").submit();
document.getElementById("form2").submit();
}
Run Code Online (Sandbox Code Playgroud)
我的表单是这样的:SELECT:
<form id ="form1" name="dists" action="solve.php" method="post">
<select id="demo" name="sadzba" onchange="selectElement1(this.value)>
<option value="">-- vyberte oblas? --</option>
</select>
</form>
Run Code Online (Sandbox Code Playgroud)
文字输入表格+按钮:
<form id="form2" action="solve.php" method="post">
<input type="text" name="spotVT" ><label>kWh za rok VT</label>
<div id="nt" style='display:none'><input type="text" name="spotNT" ><label>kWh za rok NT</label></div>
</form>
<input id="sub" type="button" value="Ok" style="margin-left:15px;" onclick="submitForms()"/>
Run Code Online (Sandbox Code Playgroud)
但这不起作用.你能帮我吗?谢谢
我意识到你永远不应该禁用一个元素并且也需要它,因为如果它被禁用,用户怎么能使它有效?
但是,我有一些<select>产品,我希望我的用户可以选择.当他们选择其中一种产品时<select>,仅当产品具有一个或多个型号时,才会填充,启用和需要产品的其他产品.否则,禁用并清空模型选择.
虽然我喜欢认为我的代码是完美的,我可以做到这样,模型下拉列表永远不会被禁用并同时需要,但我并不完美.那么,表单是否能够以<select>禁用和必需的形式提交?
来自w3.org:
约束验证:如果元素是必需的,并且其值IDL属性适用并且在模式值中,并且元素是可变的,并且元素的值是空字符串,则该元素正在丢失.
查看具体的"可变"意味着什么.
表单控件可以指定为可变的.
注意:这决定了(通过本规范中的定义和要求依赖于是否指定了元素)用户是否可以修改表单控件的值或检查,或者控件是否可以自动预填充.
选择没有值,因此由它的选项决定.
select元素没有值; 其选项元素的选择性是用来代替的.
所以,我认为这意味着如果一个<select>元素被禁用并且需要,那么表单可以被认为是有效的吗?
渲染页面时,val()使用单个值设置多重选择.例如,$("#my_select_box").val(1);
然后用户在多选框中选择一个附加值.
提交表单时,仅提交新选择的值,而不是先前设置的值.在Firefox中进行调试时,该.val()函数返回两个值的数组(前一个值和新选择的值).为什么会这样?
我有一个ASP .NET MVC 3项目和我的一个"创建"视图的问题.
我有使用ajax表单实现的级联下拉字段.
粗略地说这个观点 - 像这样:
@using (Html.BeginForm(...))
{
@Html.MyDropDown1
using (Ajax.BeginForm(...))
{
@Ajax.MyDropdown2
<input type="submit" value="Select" />
}
using (Ajax.BeginForm(...))
{
@Ajax.MyDropdown3
<input type="submit" value="Select" />
}
<!-- other form fields -->
<input type="submit" value="Create" />
}
Run Code Online (Sandbox Code Playgroud)
问题是ajax表单中的提交按钮实际上提交了外部html表单.
有没有办法指定我要提交的表单的名称?
我想把我的ajax表单放在我的html表单上面所以不会有任何嵌套 - 但我需要在我的html帖子中下拉列表的选定项的值.
谢谢,皮特
form-submit ×10
forms ×3
javascript ×3
html ×2
jquery ×2
php ×2
ajax ×1
angularjs ×1
checkbox ×1
form-for ×1
html5 ×1
java ×1
jsf ×1
nested-forms ×1
ng-submit ×1
post ×1
submit ×1
validation ×1
wicket ×1