jquery에 새로운 Im가 붙어 있습니다. 이 페이지는 Firefox와 Chrome에서 완벽하게 작동하지만 IE8의 beforeSend 기능에서 나는 내가하는 일과 관계없이 항상 "모든 입력란이 필요합니다"라는 메시지를받습니다. 누군가가 IE에서 항상이 함수가 실패하도록하는 것을 지적 할 수 있습니까? 감사.Jquery AJAX beforeSend 함수가 실패합니다. IE 8
<html>
<head>
<title>Contact form</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="../css/modal_company.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="../js/jquery-1.7.1.js"></script>
<script type="text/javascript">
$(document).ready(function() {
function getQueryParams(qs) {
qs = qs.split("+").join(" ");
var params = {},
tokens,
re = /[?&]?([^=]+)=([^&]*)/g;
while (tokens = re.exec(qs)) {
params[decodeURIComponent(tokens[1])]
= decodeURIComponent(tokens[2]);
}
return params;
}
var $_GET = getQueryParams(document.location.search);
var holy = $_GET["strUser"]
document.getElementById('hide').value = holy;
$('#submit_button').click(function() {
$.ajax({
type: 'POST',
url: 'item_add.php',
data: $('form').serialize(),
dataType: 'json',
beforeSend: function() {
var item_num = $('#item_num').val();
var descript = $('#descript').val();
var quanti = $('#quanti').val();
var fdaa = $('#fdaa').val();
if (!item_num[0] || !descript[0] || !quanti[0] || !fdaa[0]) {
$('#output').html('All fields are required');
return false;
}
},
success: function(response) {
if (response.status == 'success') {
$('#formcont').html();
}
$('#output').html(response.errmessage);
}
});
});
});
</script>
</head>
<body>
<div id="formcont" style="text-align:center; margin:0; padding:0; height:100%;">
<form id="myform">
<fieldset>
<div style="text-align:center; margin-bottom:20px; border-bottom:thin #000; width:100%;">
<h2>Add an Item</h2>
</div>
<p>
<label for="hide"><strong>Manufacturer:</strong></label>
<input type="text" readonly name="hide" id="hide" size="30" value="" style="background-color:#CCC" />
</p>
<p>
<label for="item_num"><strong>Item/Catalog #:</strong></label>
<input type="text" name="item_num" id="item_num" size="30" />
</p>
<p>
<label for="descript"><strong>Description:</strong></label>
<input type="text" name="descript" id="descript" size="30" />
</p>
<p>
<label for="quanti"><strong>Quantity Per Unit:</strong></label>
<input type="text" name="quanti" id="quanti" size="30" />
</p>
<p>
<label for="fdaa"><strong>Is this Item FDA Approved?</strong></label>
<input type="text" name="fdaa" id="fdaa" size="30" />
</p>
</fieldset>
<div id="output" style="width:100%; color:red; text-align:center;"></div>
<div style="text-align:center; margin-bottom:0px; border-bottom:thin #000; width:100%; margin-left:105px;">
<p style="text-align:center;">
<input type="button" value="Submit" id="submit_button" />
</p>
</div>
</form>
</div>
<div id="output"></div>
</body>
</html>
참고 : 해당 기능을 제거하면 모든 것이 IE에서 잘 작동합니다. 그것은 데이터베이스에 제출하고 나에게 내가 찾고있는 성공 메시지를 제공합니다. 이 기능에 대해 확실하지 않습니다.
문자열에'[0]'을 쓰는 목적은 무엇입니까? 예를 들어 IE7에서도 지원하지 않습니다. – Esailija
내가 작업 한 원래 코드에 있었기 때문에 작동하지 않았습니다. 그것이 문제일까요? Firefox와 Chrome에서 정상적으로 작동합니다. –
'! item_num || ! descript || ! quanti || ! fdaa' ... 나는 당신의 ie8 버전이 문자열 첨자 표기법을 지원하지 않는다는 직감을 가지고있다 : P (내 것은 그렇지만 IE9 호환성 모드에서 실행 중이다.) 코드는 실제로 동일 할 것이다 - if 조건을 전달할 것이다 if 변수 중 하나라도 빈 문자열이었습니다. – Esailija