2015-07-25 3 views
3
<input name="e_password" id="e_password" type="password" autocomplete="off" /> 

выше является полем пароля, который по какой-то причине, автоматически заполняется только в Mozilla (не в Chrome и IE11). Очевидно, что он сохраняет поле значений из предыдущих испытаний. Я так много старался очистить это поле. только способом я могу управлять ею, через следующее:Очистить поле пароль

$(document).ready(function(){  
    $('input:text').val(''); 
}); 

К сожалению, вышеприведенные сбрасывает все остальные текстовые поля внутри формы, что является нежелательным. Кроме того,

$(document).ready(function(){ 
    $('input:password').val(''); 
}); 

не работает! Кроме того, я попытался это:

<div class="abc"> 
    <input name="e_password" id="e_password" type="password" autocomplete="off" /> 
</div> 

$(document).ready(function(){ 
    $('.abc input:text').val('');  
}); 

Нор, это работает ... Конечно, я попробовал очевидное:

$('#e_password').val(''); 

, который также не работает. Я повторяю, что проблема существует только в Mozilla. Что еще я могу сделать?

Спасибо

+0

Это невероятно, однако, ни один из следующих предложенных решений не работает! Конечно, это вопрос паролей Mozilla, и я хочу преодолеть его с помощью кода. На данный момент это кажется невозможным. –

+0

Я не могу понять, почему единственное, что работает: $ ('input: text'). Val (''); и как заставить его влиять только на «e_password» ... –

+0

Еще одна деталь. Если вы пытаетесь присвоить что-то отличное от "", например. $ ('# E_password') Вал ('12q'). все работает отлично !!! –

ответ

3

Я нашел его!

setTimeout(function(){ $('#e_password').val('');}, 50); 

Надеюсь, вышеуказанные работы. Однако я не могу дать удовлетворительного объяснения, почему эта небольшая задержка решает проблему ... Скорее всего, это ошибка Mozilla.

0

$ ("# e_password"). Val ('') работает для меня в Firefox. Можете ли вы попробовать?

$("#e_password").attr("value","") 
0

Pure Javascript:

document.getElementById('e_password').value = ''; 

Или с помощью JQuery:

$('#e_password').attr('value',''); 
0

autocomplete="off" должен быть установлен для form элемента не input

<form autocomplete="off"> 
    .... 
</form> 
1
document.getElementById("e_password").value = ""; 

или

$('input[type="password"]#e_password').val(''); 
+0

На самом деле не работает. Протестировано на Firefox 53. – devius

0

Может быть, я ошибаюсь, но я думаю, это не проблема кода вообще !!. Это могут быть сохраненные пароли в браузере. Например, когда вы открываете страницу в хроме, просто проверьте верхнюю правую часть омнибокса, и вы можете щелкнуть крест, чтобы удалить сохраненный пароль для этой страницы. Я догадался об этом, потому что вы говорите, что это происходит только в mozilla, а не в других браузерах.

0

Это старый вопрос, но я сделал это так, как это уже не упоминалось. Это было сделано после почти всех предложений в этом потоке (кроме таймаута, поскольку я не хочу добавлять лишние задержки на моей странице).

Проблема, которую я видел, заключалась в том, что браузер автоматически заполнял поле пароля, значение не задано.Таким образом,

$('#password').val(""); 

не будет работать, потому что значение уже «».

Так что я сделал это в 2 строках.

$('#password').val("a"); 
$('#password').val(""); 

Я установил значение для чего-то, чтобы я мог его очистить. Затем поле автозаполнения браузера очищается.

Надеюсь, что это поможет кому-то!

0

FF использует событие «change» при автозаполнении (по крайней мере, в версии v51).

попробовать что-то вроде

// if your input is in html 
$(document).ready(function(){ 

/* // if you create input from code like this 
$("body").html('<input class="password" type="password" id="e_password">').promise().done(function(){ 
*/ 

    $("#e_password").on("change", function() { //append this event 
     $("#e_password").off("change"); //optional, depends on your code 
     $("#e_password").val(''); //clear 
     $("#e_password").attr("value",""); //clear #2 (just to be sure) 
    }); 

}); 
Смежные вопросы