#firefox #forms
#firefox #формы
Вопрос:
На моем сайте есть HTML-форма, и по какой-то причине я не могу ввести текст во входные данные при просмотре сайта в Firefox (и только Firefox). Моя форма настроена следующим образом:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<form action="/MyAction/" method = "post" id="register">
<div class="registerField">
<label for="signupFirstName" class="registerLabel">First Name</label>
<input type="text" name="signupFirstName" id="signupFirstName" />
</div>
<div class="registerField">
<label for="signupLastName" class="registerLabel">Last Name</label>
<input type="text" name="signupLastName" id="signupLastName" />
</div>
<div class="registerField">
<label for="signupPassword" class="registerLabel">Enter Password</label>
<input type="password" name="signupPassword" id="signupPassword" autocomplete="off" />
</div>
<div class="registerField">
<label for="retypeSignupPassword" class="registerLabel">Re-enter Password</label>
<input type="password" name="retypeSignupPassword" id="retypeSignupPassword" autocomplete="off" />
</div>
<div>
<div id="registerButtons">
<label for="signupButton">
<input type="submit" value = "Create Account" name = "registerButton" id="signupButton"/>
</label>
</div>
</div>
</form>
У меня был обратный вызов, прикрепленный к событию keyup в форме (который действительно зарегистрировал событие), но с тех пор он был отключен, и у меня все еще есть эта проблема. Кроме того, когда я щелкаю правой кнопкой мыши и выбираю «Проверить элемент» на любом из входных элементов, чтобы запустить Firebug, все работает. Заранее спасибо за любые советы.
РЕДАКТИРОВАТЬ: спасибо всем, кто прокомментировал до сих пор. Ниже приведен метод Javascript, отключенный от контроллера, который мы используем для координации формы:
if (this.view.hasClass("readyToSubmit"))
{
return true;
}
else
{
var email = viewState.userState.user.EmailAddress;
var password = $("#signupPassword").val();
var passwordConfirm = $("#retypeSignupPassword").val();
var firstName = $("#signupFirstName").val();
var lastName = $("#signupLastName").val();
var isOrg = false;
if (!isValidEmail(email))
{
this.registerStatusController.set("Invalid email");
return false;
}
if ((password == null) || (password == undefined) || (password.length < 6))
{
this.registerStatusController.set("Please enter a total of at least 6 letters, numbers, and symbols for your password");
return false;
}
if (!(password == passwordConfirm))
{
this.registerStatusController.set("Your passwords do not match");
return false;
}
if (firstName == '' || lastName == '')
{
this.registerStatusController.set("You must provide a first and last name.");
return false;
}
requestController.post("/Home/MyAction",
{
username: email,
password: password,
passwordConfirm: passwordConfirm,
firstName: firstName,
lastName: lastName,
timeOffset: -(new timezoneJS.Date()).getTimezoneOffset(), //Our tzo is negative of server side tzo
isOrganization: isOrg
},
$.scope(this.callbackRegistered, this),
function (XMLHttpRequest, textstatus, errorThrown)
{
this.registerStatusController.set("A system error has occurred. Please try again later.");
});
return false;
}
this.callbackRegistered = function (data, textStatus)
{
if (data == 0)
{
viewState.userState.isProvisional = false;
this.registerStatusController.set("New account created");
this.view.addClass("readyToSubmit");
// $("#register").submit();
// Run the post-registration action and then clear it.
if (this.postRegisterAction)
{
this.postRegisterAction();
this.postRegisterAction = null;
}
this.hide();
}
else
{
$('body').css("cursor", "auto");
if (data == 1)
{
this.registerStatusController.set("You are already logged in");
}
else if (data == 3)
{
this.registerStatusController.set("Your account is already registered");
}
else if (data == 4)
{
this.registerStatusController.set("Your invitation code is not valid");
}
else
{
this.registerStatusController.set("The system is not available at this time. Please try again later.");
}
}
}
Для этих входных данных не определен CSS.
Еще одна вещь: эта форма хранится во всплывающем div, который перекрывает всю страницу. Его CSS определен ниже:
#registerPopOver
{
top: 0px;
left: 0px;
position: fixed;
width: 100%;
height: 100%;
}
Форма находится в div в #registerPopOver:
#registerPopOverInner
{
margin: auto;
background-color: white;
width: 300px;
margin-top: 20%;
border: 1px #CCC solid;
padding: 4px;
}
Еще раз спасибо всем за ваш совет.
Комментарии:
1. Из вашего фрагмента я не вижу причин, по которым входные данные формы не должны работать. Какая версия Firefox? Вы пробовали отключить Firebug?
2. Отлично работает в Firefox 7 (и я действительно не знаю, почему этого не должно быть). Можем ли мы увидеть остальную часть кода?
3. применяете ли вы и css к входным данным?
4. @Dennis Спасибо за ваш ответ. Я опубликовал некоторый дополнительный соответствующий код, надеюсь, это поможет.
5. Я все еще не вижу причин, по которым это не должно работать. Есть ли шанс, что вы могли бы разместить ссылку на «рабочий» пример?
Ответ №1:
Мы нашли проблему. Оказывается, календарь на основе javascript крал наше внимание. Спасибо всем, кто откликнулся!