필드가있는 extjs 양식이 있습니다. 사용자는 각 필드에 데이터를 입력 할 필요가 없으므로 데이터가없는 필드를 제출하지 않으려 고합니다. 실제로 데이터가있는 입력란 만 게시하고 싶습니다. 이것이 가능한가?ExtJS에서 빈 양식 필드를 제출하지 마십시오
답변
양식 제출을 사용하는 대신 url, 메소드 유형 (GET/POST) 및 매개 변수 (및 통화 설명서에서 설명한대로 기타 옵션)를 사용하여 Ext.Ajax.request(...)을 직접 호출하십시오. params를 생성하려면 양식 필드를 반복하고 params에 추가하기 전에 null 값을 확인하십시오.
양식의 beforeaction
이벤트를 사용하는 것이 좋습니다. 이 이벤트를 처리하는 동안 모든 필드를 확인할 수 있습니다. 모든 값이 비어 있으면 그냥 return false;
. 다음의 예는 ExtJS4에서 작동하고 ExtJS3에서 작동한다 :
myform.on('beforeaction', function(form, action) {
if (action.type == 'submit') {
var doSubmit = false, vals = form.getValues();
for (var i in vals)
if (vals[i] !== '') {
doSubmit = true;
break;
}
return doSubmit;
}
});
Actualy, 빈 필드를 제출하지 올바른 방법은 행동의
submitEmptyText
설정을 사용하는 것입니다. 하지만 현재 버전 (ExtJS4.0.2a)에서는 작동하지 않습니다.
이 버그는 ExtJS 4.0.7에도 있습니다.
으로 분자 남자는 지적 :
이Actualy, 빈 필드를 제출하지 올바른 방법 행동의 submitEmptyText의 설정을 사용하는 것입니다. 하지만 현재 버전 (ExtJS4.0.2a)에서는 작동하지 않습니다.
이 버그를 수정하기위한 가능한 해결책 Ext.form.Panel "으로 (우리의 기본적인 형태를 생성하기 위해) (버그 임)"Ext.form.Basic "과의 CreateForm 2 개 함수에 getValues 재정의하는 것이다 "확장자는 다음과 같습니다.
Ext.define("My.form.Basic", {
alias: "form.mybasic",
extend: "Ext.form.Basic",
getValues: function(asString, dirtyOnly, includeEmptyText, useDataValues) {
var values = {};
this.getFields().each(function(field) {
if (!dirtyOnly || field.isDirty()) {
var data = field[useDataValues ? "getModelData" : "getSubmitData"](includeEmptyText);
if (Ext.isObject(data)) {
var isArray = Ext.isArray;
Ext.iterate(data, function(name, val) {
if (includeEmptyText && val === "") {
val = field.emptyText || "";
}
if (includeEmptyText || ((!isArray(val) && val !== "") || (isArray(val) && val.length !== 0))) {
if (name in values) {
var bucket = values[name];
if (!isArray(bucket)) {
bucket = values[name] = [bucket];
}
if (isArray(val)) {
values[name] = bucket.concat(val);
}
else {
bucket.push(val);
}
}
else {
values[name] = val;
}
}
});
}
}
});
if (asString) {
values = Ext.Object.toQueryString(values);
}
return values;
}
});
Ext.define("My.form.Panel", {
alias: "form.mypanel",
extend: "Ext.form.Panel",
createForm: function() {
return Ext.create("My.form.Basic", this, Ext.applyIf({listeners: {}}, this.initialConfig));
}
});
코드는 ext 소스 코드에서 복사됩니다. 유일한 변화는 각 필드의 반복 내부 : 나는 ... 나중에 결코보다
또 다른 옵션을 더 조금 늦게 모르지만,
if (includeEmptyText || ((!isArray(val) && val !== "") || (isArray(val) && val.length !== 0)))
구성 요소의를 무시하는 것입니다 : "만약"다음 포장을 도입 getSubmitValue()
메소드를 사용하고이 필드가 비어 있으면 제출 필드에 포함되지 않도록 null
을 리턴하십시오.
{
xtype: 'combo',
getSubmitValue: function(){
var value = this.getValue();
if(Ext.isEmpty(value)) {
return null;
}
return value;
}
}
필드가 많지만 작동하는 코드가 너무 많습니다! –
- 1. JavaScript가 활성화되어 있지 않으면 양식을 제출하지 마십시오.
- 2. ExtJS에서 양식 + 격자 제출 4
- 3. IE8 - Enter 키가 검색 필드를 제출하지 않습니다.
- 4. ExtJs에서 데이터베이스와 텍스트 필드를 연결하는 방법
- 5. IE에서 제출하지 않는 MVC Ajax 양식
- 6. JSP 포틀릿이 양식 값을 제출하지 않음
- 7. MySQL이 필드를 연결하지만 빈 필드를 무시합니다.
- 8. CakePHP의가 : 찾기에서 id 필드를 검색하지 마십시오()
- 9. 빈 검증없이 양식 제출
- 10. Ruby for Rails collection_select가 모델에 필드를 제출하지 않음
- 11. yaml에서 빈 필드를 나타내는 방법
- 12. Jira의 빈 필드를 필터링하려면 어떻게해야합니까?
- 13. PHP 업데이트 테이블은 빈 필드를
- 14. ExtJS에서 오류 마커 설정
- 15. 필드를 비활성화하지 않고 양식 필드를 편집하지 못하게하십시오.
- 16. 다른 양식 필드를 기반으로 양식 필드 채우기
- 17. 양식 제출시 웹 페이지를 위로 스크롤하지 마십시오.
- 18. extjs에서 간단한 파일 업로드
- 19. : 양식 요소에 jQuery가있는 빈 선택기?
- 20. 빈 양식 필드의 JavaScript 값
- 21. MS Access에서 빈 양식 표시
- 22. 양식 필드를 자동으로 채우는 방법
- 23. jquery를 사용하여 양식 필드를 반복합니다.
- 24. Rails에서 양식 필드를 자동으로 채우시겠습니까?
- 25. 제출하지 않고 button_to
- 26. extJs에서 textArea의 테두리를 제거하려면 어떻게해야합니까?
- 27. 웹 서비스에 대한 전체 InfoPath 양식 전달 (제출하지 않음)
- 28. 자바 스크립트 onunload 양식 제출이 데이터를 제출하지 않습니다.
- 29. 양식을 제출하지 않고 루비를 사용하여 양식 요소 값에 액세스하려면 어떻게해야합니까?
- 30. 페이지 새로 고침시 jQuery로 양식 다시 제출하지 않기
Sencha 문서는 다소 불분명하지만'submitEmptyText'의 사용법에 대해서는 올바르지 않다고 생각합니다. 'SubmitEmptyTex't는 필드가'''(empty) 일 때만 평가되고 빈 문자열을'emptyText' 속성으로 대체합니다. false로 설정하면 빈 문자열이 그대로 남아있게되므로 요청에 여전히 포함됩니다. –
@ JamesMcMahon, 아마도 맞을 것입니다. 감사. –
'form.getValues (false, true);를 호출하십시오. 두 번째 매개 변수는 dirtyOnly = true입니다. 이는 값이있는 필드 만 가져옵니다. – pdizz