1
私のAJAX呼び出し検証は、ボタンが押されて入力したときに動作しますが、
$("#go_btn").on('click',function(){
$.ajax({
url: '<c:url value="/filter/save" />',
data: $('input,select',"#requestForm").not(".hint").serialize(),
type: 'POST',
cache: false,
success: function(data){
if(data.success == true){
$('.error',"#requestForm").hide().removeData('errorsData');
$("#requestForm").submit();
}else if(data.success == false){
$('.error',"#requestForm").hide().removeData('errorsData');
var errors = data.errors;
for (var key in errors) {
var errorDesc = errors[key];
var $question = $('input[name="'+key+'"],select[name="'+key+'"]',"#requestForm").parents('td');
var $errorDiv = $('div.error',$question);
var errorsData = $errorDiv.data('errorsData');
if(!errorsData){
errorsData = new Array();
$errorDiv.data('errorsData',errorsData);
}
errorsData[errorsData.length] = errorDesc;
var errorHTML = '';
for(var i=0 ; i < errorsData.length;i++){
if(i>0){
errorHTML += '<br />';
}
errorHTML += errorsData[i];
}
$('.error_message',$errorDiv).html(errorHTML);
$errorDiv.show();
$(this).scrollTop(0);
$('input[name="'+key+'"]').focus();
$('select[name="'+key+'"]').focus();
}
}
}
});
私のHTMLコード
<a href="#" title="click next" id="go_btn" style="color:#fff;text-decoration:none;">
コントローラメソッド
@RequestMapping(value = "/filter/save", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> saveFilterDetails(
@ModelAttribute(value = "bean") Bean bean,
BindingResult result, Model model) {
Map<String, Object> output = new HashMap<String, Object>();
Map<String, String> fieldErrors = new HashMap<String, String>();
if (bean.getIndustryId() == 0 || bean.getIndustryId() <= 0) {
result.rejectValue("industryId", "bean.filter.industry.mandatory");
}
if (bean.getRoleId() == 0 || bean.getRoleId() <= 0) {
result.rejectValue("roleId", "bean.filter.role.mandatory");
}
ValidationUtils.rejectIfEmptyOrWhitespace(result, "customerName",
"bean.customername.mandatory");
if (result.hasErrors()) {
output.put("success", false);
for (FieldError fieldError : result.getFieldErrors()) {
try {
String value = messageSource.getMessage(fieldError, null);
fieldErrors.put(fieldError.getField(), value);
} catch (Exception e) {
e.printStackTrace();
}
}
output.put("errors", fieldErrors);
return output;
}
else
{
output.put("success", true);
return output;
}
}
検証をボタンをクリックする上で動作しませんユーザーがボタンをクリックしたときに機能しますが、ユーザーがEnterキーを押したときには機能しません。 Enterキー機能を自分のコードにバインドして動作させる方法
編集:
私のフォーム
<form:form id="requestForm" method="post" modelAttribute="bean" Action="${pageContext.request.contextPath}/social" >
.
.
.
<a href="#" title="click next" id="go_btn" style="color:#fff;text-decoration:none;">
.
.
.
</form:form>
これは、フォームを送信するために 'a'要素を使用しているからです。その要素をフォーム内の送信ボタンに変更すると、デフォルトでその動作が得られます。 –
入力タイプiを送信するとajaxコールが発生しない –
入力はどこですか?関連するHTMLを含めていない –