모든 하위 요소를 선택하고 특정 특성을 가진 요소를 필터링하려고합니다. 요소 중 하나는 데이터 필수 속성을 포함하는 contenteditible div입니다 (아래 HTML 참조).이 jQuery 선택기가 요소를 반환하지 않는 이유는 무엇입니까?
$("#mail-container").filter('[required], [data-required]').length
을하지만 다음을 실행할 때, 0이 반환됩니다 : 나는 다음 선택기를 사용하면 1을 반환
form.contents().filter('[data-required]').length;
주, 다음 반환 9 :
form.contents().length;
을 EDIT
다음 함수를 다음 : 내가 놓친 게 무엇
$("#send-email").on('mouseup', function (e) {
if (!validateRequiredFields($("#form-email-preview"))) return false;
var data = {};
data.action = "manuscript-request-email";
data["writers-id"] = $("#writer-id").val();
data["account-id"] = localStorage.getItem("account-id");
data.subject = $("#subject").val();
data.body = $("#mail-container").html();
ajax('post', 'php/writers.php', data, sentEmail);
function sentEmail(result) {
console.log("email-res=" + result);
return2table();
}
});
function validateRequiredFields(form) {
var $reqFlds = form.contents().filter('[required], [data-required]');
var ret = true;
debugger
$reqFlds.each(function() {
var $this = $(this);
var result = ($this.eq("input, select, textarea")) ? $this.val() : $this.text();
if (!$.trim(result)) {
$this.prop('data-toggle=popover', true);
$this.show();
$this.popover("destroy").popover({ content: "Please fill out this field.", placement: 'bottom' });
$this.popover('show');
$this.focus();
ret = false;
return false;
}
});
return ret;
}
HTML
<form id="form-email-preview" style="margin-top: 24px;">
<div id="main-container" class="hidden" style="border: 1px solid black; padding: 6px; border-radius: 8px;">
<span><b>Subject:</b></span><input id="subject" type="text" value="Manuscript Request" style="display: inline-block" />
<p><b>Email:</b></p>
<div id="mail-container" contenteditable data-toggle="popover" data-required data-placement="top" data-title ="Required field" style="display: inline-block"></div><br/>
<p id="buttons" class="hidden">
<input type='button' id='send-email' class='btn btn-custom-success' value='Send Email' /><span> </span>
<button id='cancel-email' class = 'btn btn-danger'>Cancel</button>
</p>
</div>
<div id="current-row" class="hidden"></div>
<input id="current-checkbox" type="checkbox" class="hidden" />
<input id="current-tr" type="number" class="hidden" />
</form>
?
전체 코드를 붙이시겠습니까 – CNKR
많은 JS 코드가 있습니다. 뭐, 특히보고 싶니? –
validateRequiredFields()를 호출 할 때 – CNKR