Я создал форму, используя теги struts. Я отправил форму асинхронно, используя тег отправки struts jquery. Теперь, прежде чем я отправлю свою форму, я хочу вызвать функцию javascript checkUser()
, которая проверяет, есть ли какая-то ошибка на стороне клиента, и предотвращает отправку формы. Форма с функцией javascript выглядит следующим образом:
<script type="text/javascript">
function loadXMLDoc() {
var xmlhttp;
var k = document.getElementById("register_userDetails_username").value;
var urls = "pass.jsp?ver=" + k;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
document.getElementById("err1").innerHTML = xmlhttp.responseText;
}
};
xmlhttp.open("GET", urls, true);
xmlhttp.send();
}
</script>
<script type="text/javascript">
function checkuser() {
alert("hi");
var i = document.getElementById('err1').innerHTML.search("Unavailable");
alert(i);
var j= document.getElementById('err1').innerHTML.search("Min length:8");
alert(j);
if (i!= -1 || j!=-1) {
alert("hello");
return false;
}
alert("false");
return false;
}
</script>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<jsp:include page="menubar.jsp"></jsp:include>
<s:form action="register" method="post" theme="css_xhtml" cssClass="form1" style="margin:8px 211px" onsubmit="return checkuser()">
<div class="searchHeader">Sign Up</div>
<div id="passwordMatchError">
<s:property value="error"/>
</div>
<s:textfield label="Name" name="userDetails.name" maxlength="30"/>
<s:textfield label="Username" name="userDetails.username" onkeyup="loadXMLDoc()" maxlength="30">
<div id="err1"></div>
</s:textfield>
<s:password label="Password" name="userDetails.password" maxlength="45"/>
<s:hidden name="userDetails.role" value='U' />
<s:password name="confirmPassword" label="Confirm Password" maxlength="45"/>
<s:radio label="Sex" name="userDetails.sex" list="#{'M':'Male','F':'Female'}" />
<s:textfield label="Phone No" name="userDetails.phoneno" maxlength="10"/>
<s:textfield label="E-mail" name="userDetails.email" maxlength="45"/>
<div id="submitdivid">
<sj:submit value="SUBMIT" cssClass="orangebuttonsmall" targets="mainContent" id="sas" />
</div>
</s:form>
Теперь, когда я ввожу какое-то значение в поле имени пользователя, которое уже существует в БД, оно показывает строку Unavailable
в div с идентификатором err
.
В событии onsubmit
формы я вызвал метод checkuser
. Но с sj:submit
событие onsubmit
не работает. Может ли кто-нибудь помочь мне с тем, как вызвать эту работу onsubmit
? Моя цель - предотвратить отправку формы, если существует строка Unavailable
или Min Length:8
в div err
. Любые альтернативные решения также принимаются.
sj:submit
. - person Roman C   schedule 14.11.2013sj:submit
ведет себя какs:submit
, то между запросами должно быть переключение. - person Roman C   schedule 20.11.2013s:if
, чтобы сделать выбор между двумя отправками. - person Roman C   schedule 20.11.2013