为防止某些神经质的用户多次提交表单,我四处寻找一些解决方案。我发现的实现如下。现在,这在桌面浏览器上可以正常工作,但是在iOS设备上,它禁用了该按钮,但似乎从未真正提交过该表单。在桌面上,我的按钮颜色和文本更改,按钮被禁用,控制器接管处理输入。在iOS上,我得到了颜色变化,新文本,禁用按钮,但根本没有控制器输入。有人遇到过同样的问题并找到了解决方法吗?这不是iOS GO按钮的问题。问题在于,一旦禁用按钮,该表单将不再在iOS上处理(单击后)。
我尝试的第一件事是删除form.myButton.disabled = true;。从我的功能开始,然后在桌面和iOS上进行良好的表单处理,包括按钮颜色和文本;但是,该按钮未被禁用,仍然允许多次提交。
我尝试了其他各种示例。如果我在form_open上将其作为属性(onsubmit)传递,则禁用和提交可在桌面上进行,但是我还在form_open中包含一个类,该类不再起作用,从而实质上破坏了IOS上的表单功能。如果我使用一个简单的文本字段输入作为表单,则可以使用以下方法,但是在具有混合文本和复选框的更复杂表单上,输出在iOS(而不是台式机)上已损坏。
例如:echo form_open(base_url('home / step_one'),array('onsubmit'=>'return checkForm(this)'),'class =“ form-horizontal”');
<?php echo form_open(base_url('home/step_one'), 'class="form-horizontal"');?>
<div class="form-group">
<div class="col-sm-6">
<label class="control-label">First and Last Name * </label>
<input type="text" name="full_name" class="form-control" value="<?=isset($signup)?$signup[" full_name "]:" ";?>" required />
</div>
<div class="col-sm-6">
<label class="control-label">Email Address * </label>
<input type="email" name="email" class="form-control" value="<?=isset($signup)?$signup[" email "]:" ";?>" required />
</div>
</div>
<div class="form-group">
<div class="col-md-12 c_txt_right">
<input id="submitting" type="submit" onclick="checkForm(this.form);" name="myButton" value="Submit" class="btn btn-info">
<button type="button" value="Reset" onclick="resetForm(this.form);" class="btn btn-danger">Reset</button>
</div>
</div>
<script type="text/javascript">
function checkForm(form) // Submit button clicked
{
form.myButton.disabled = true;
form.myButton.value = "Please wait...";
document.getElementById("submitting").className = "btn btn-warning";
return true;
}
function resetForm(form) // Reset button clicked
{
form.myButton.disabled = false;
form.myButton.value = "Submit";
window.location.reload();
}
</script>
<?php echo form_close( ); ?>