양식 제출시 제출 버튼 비활성화
클릭 후 내 웹 사이트에서 제출 버튼을 비활성화하기 위해이 코드를 작성했습니다.
$('input[type=submit]').click(function(){
$(this).attr('disabled', 'disabled');
});
불행히도 양식을 보내지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?
편집 양식이 아닌 제출을 바인딩하고 싶습니다. :)
해 onSubmit()
:
$('form#id').submit(function(){
$(this).find(':input[type=submit]').prop('disabled', true);
});
무슨 일이 일어나고 있는지는 실제로 제출 이벤트를 트리거하기 전에 버튼을 완전히 비활성화하는 것입니다.
ID 또는 CLASS로 요소 이름을 지정하는 것도 고려해야하므로 페이지에서 제출 유형의 모든 입력을 선택하지 않습니다.
데모 : http://jsfiddle.net/userdude/2hgnZ/
(참고, 내가 사용 preventDefault()
하고 return false
형태가 실제하지 않도록 예에 제출, 당신의 사용이 꺼 둡니다.)
특히 누군가 Chrome
다음 에서 문제에 직면 한 경우 :
이 문제를 해결 onSubmit
하려면 <form>
요소 의 태그 를 사용 하여 제출 버튼을 설정해야합니다 disabled
. 이렇게하면 Chrome이 버튼을 누른 직후에 버튼을 비활성화 할 수 있으며 양식 제출은 계속 진행됩니다.
<form name ="myform" method="POST" action="dosomething.php" onSubmit="document.getElementById('submit').disabled=true;">
<input type="submit" name="submit" value="Submit" id="submit">
</form>
비활성화 된 컨트롤은 사용자가 저장 또는 삭제를 클릭했는지 알 수없는 값 을 제출 하지 않습니다.
그래서 버튼 값을 숨겨진 곳에 저장합니다. 숨겨진 이름은 버튼 이름과 동일합니다. 나는 모든 버튼을 button
.
예 <button type="submit" name="button" value="save">Save</button>
이것을 바탕으로 여기 에서 찾았 습니다 . 클릭 한 버튼을 변수에 저장하기 만하면됩니다.
$(document).ready(function(){
var submitButton$;
$(document).on('click', ":submit", function (e)
{
// you may choose to remove disabled from all buttons first here.
submitButton$ = $(this);
});
$(document).on('submit', "form", function(e)
{
var form$ = $(this);
var hiddenButton$ = $('#button', form$);
if (IsNull(hiddenButton$))
{
// add the hidden to the form as needed
hiddenButton$ = $('<input>')
.attr({ type: 'hidden', id: 'button', name: 'button' })
.appendTo(form$);
}
hiddenButton$.attr('value', submitButton$.attr('value'));
submitButton$.attr("disabled", "disabled");
}
});
여기 내 IsNull
기능이 있습니다. IsNull 또는 정의되지 않은 등의 고유 버전을 사용하거나 대체하십시오.
function IsNull(obj)
{
var is;
if (obj instanceof jQuery)
is = obj.length <= 0;
else
is = obj === null || typeof obj === 'undefined' || obj == "";
return is;
}
앱에서 처리해야합니다.
$(":submit").closest("form").submit(function(){
$(':submit').attr('disabled', 'disabled');
});
간단하고 효과적인 솔루션은
<form ... onsubmit="myButton.disabled = true; return true;">
...
<input type="submit" name="myButton" value="Submit">
</form>
출처 : 여기
더 간단한 방법. 나는 이것을 시도했고 그것은 나를 위해 잘 작동했습니다.
$(':input[type=submit]').prop('disabled', true);
코드는 실제로 FF에서 작동하지만 Chrome에서는 작동하지 않습니다.
이것은 FF 및 Chrome에서 작동합니다.
$(document).ready(function() {
// Solution for disabling the submit temporarily for all the submit buttons.
// Avoids double form submit.
// Doing it directly on the submit click made the form not to submit in Chrome.
// This works in FF and Chrome.
$('form').on('submit', function(e){
//console.log('submit2', e, $(this).find('[clicked=true]'));
var submit = $(this).find('[clicked=true]')[0];
if (!submit.hasAttribute('disabled'))
{
submit.setAttribute('disabled', true);
setTimeout(function(){
submit.removeAttribute('disabled');
}, 1000);
}
submit.removeAttribute('clicked');
e.preventDefault();
});
$('[type=submit]').on('click touchstart', function(){
this.setAttribute('clicked', true);
});
});
</script>
제출 버튼을 비활성화하는 방법
onclick 이벤트에서 함수를 호출하고 ... 제출하려면 true를 반환하고 제출을 비활성화하려면 false를 반환합니다. 또는 window.onload에서 다음과 같이 함수를 호출하십시오.
window.onload = init();
init ()에서 다음과 같이하십시오.
var theForm = document.getElementById(‘theForm’);
theForm.onsubmit = // what ever you want to do
다음은 나를 위해 일했습니다.
var form_enabled = true;
$().ready(function(){
// allow the user to submit the form only once each time the page loads
$('#form_id').on('submit', function(){
if (form_enabled) {
form_enabled = false;
return true;
}
return false;
});
});
사용자가 양식 제출을 여러 번 시도하면 제출 이벤트가 취소됩니다 (제출 버튼 클릭, Enter 누르기 등).
비활성화되거나 숨겨진 버튼에서 브라우저 비 호환성을 피하기 위해 blockUI를 사용하고 있습니다.
http://malsup.com/jquery/block/#element
그런 다음 내 버튼에는 클래스 자동 버튼이 있습니다.
$(".autobutton").click(
function(event) {
var nv = $(this).html();
var nv2 = '<span class="fa fa-circle-o-notch fa-spin" aria-hidden="true"></span> ' + nv;
$(this).html(nv2);
var form = $(this).parents('form:first');
$(this).block({ message: null });
form.submit();
});
그런 다음 양식은 다음과 같습니다.
<form>
....
<button class="autobutton">Submit</button>
</form>
버튼 코드
<button id="submit" name="submit" type="submit" value="Submit">Submit</button>
버튼 비활성화
if(When You Disable the button this Case){
$(':input[type="submit"]').prop('disabled', true);
}else{
$(':input[type="submit"]').prop('disabled', false);
}
Note: You Case may Be Multiple this time more condition may need
As said before, if you add the disabled attribute on the submit button, the data will not be sent.
The trick from @Valamas works, but I found a solution which is very easy to implement:
$('#yourform').submit(function(){
$('#mySubmitButton').addClass('disabled');
});
And you define the disabled class in CSS like that:
.disabled{
cursor:not-allowed;
}
This will do the same as disabled="disabled", but without the consequences on the sent data.
참고URL : https://stackoverflow.com/questions/5691054/disable-submit-button-on-form-submit
'developer tip' 카테고리의 다른 글
사전에 키, 값 쌍을 추가하는 방법은 무엇입니까? (0) | 2020.10.31 |
---|---|
JsDoc에서 void를 반환하는 방법은 무엇입니까? (0) | 2020.10.31 |
BACKUP LOG TO DISK 후에도 로그 파일의 DBCC SHRINKFILE 크기가 줄어들지 않음 (0) | 2020.10.31 |
Django Rest 프레임 워크 토큰 인증 (0) | 2020.10.31 |
옵션 값 가져 오기 또는 예외 발생 (0) | 2020.10.31 |