2011-02-04 3 views
1

나는 다음과 같은 코드가 있습니다jQuery를 및 취급 요소 ID의

function mandatoryField(manF) 
    { 
     var fieldId = $(manF).val(); 
     if(fieldId == "") 
     { 
      return false; 
     } 
     else 
     { 
      return true; 
     } 
    } 

그것은 작동하지 않습니다,하지만이 작업을 수행합니다

function mandatoryField() 
    { 
     var fieldId = $("#element_1").val(); 
     if(fieldId == "") 
     { 
      return false; 
     } 
     else 
     { 
      return true; 
     } 
    } 
는 가정, 내 첫 번째 예에서, mandatoryField는 같은이라고

:

mandatoryField("#element_1") 

절대 요소 ID 이름을 변수로 바꿀 때 왜 작동하지 않습니까?

편집 :

가장 최근 코드 - 비 작동 :

: 나는 다음과 같이 할 수있는 모든 일을 다시 작성했습니다 2

function isAmExSelected() 
    { 
     return $("#creditCardType").val() == "American Express"; 
    } 

    function containsOnlyDigits(str) 
    { 
     return str.match(/[^0-9]/) == null; 
    } 

    function validateCCNumber() 
    { 
     var ccn = $("#creditCardNumber").val(); 
     var onlyDigits = containsOnlyDigits(ccn); 
     if(isAmExSelected()) 
     { 
      return ccn.length == 15 && onlyDigits; 
     } 
     else 
     { 
      return ccn.length == 16 && onlyDigits; 
     } 
    } 

    function mandatoryField(manF) 
    { 
     var fieldId = $("#" + manF).val(); 
     return fieldId != ""; 
    } 


    function registerValidation(id, validateMethod(), errorMethod) 
    { 
      $(id).change(function(){ 
       if(validateMethod() == false) 
       { 
        errorMethod(); 
       } 
      }); 
    } 


    $(document).ready(function(){ 
     registerValidation("#creditCardNumber", validateCCNumber, function(){alert("Invalid Credit Card Number!")}); 
     $('input[type=text][class=mandatory]').blur(function(){ 
      if (mandatoryField(this.id)) { 
        alert('Field:' + this.id + ' is mandatory!') 
      } 
     }); 
    }); 

편집

 $('input[type=text][class=mandatory]').blur(function(){ if (!($("#" + this.id).val().length)) { alert('Field:' + this.id + ' is mandatory!'); } }); 

필수 클래스의 텍스트 입력이 흐려지면 함수를 실행합니다. if # foo.val()에 길이가 없습니다 (예 : 텍스트가 없다면 알림을 실행하십시오. 나는 그것이 효과가 있다고 믿지만, 그렇지 않습니다.

+0

어쩌면 당신은 당신의 예를 들어 http://jsfiddle.net/을 만들 수 있습니다. –

+0

당신은 필수 패스 필 수 없다 필수 필드 이름을 –

+0

내 업데이트를 체크 –

답변

0

jquery는 manF가 DOM 객체라고 가정하지만 대신 문자열을 전달하기 때문에 이것은 작동하지 않습니다.

당신이 이제까지
var tr = $('#element1') //----------1 

alert($(tr).val()) //------------2 

그럴 필요가

UPDATE :

왜이 일

//some code on some event 

if(!check_mandatory()) 
//do something else 

else do another thing 

//some code on some event 

을 시도하지 않으며 실제로 DOM 개체입니다

을 시도해야 함수

하지

function mandatoryField(manF) 
    { 
     if($('#' + manF).val() == "") 
     { 
      return false; 
     } 
     else 
     { 
      return true; 
     } 
    } 
mandatoryField("element_1"); 

하지만이 요소를 사용하면 값을 얻을 것이다 :

function check_mandatory() 
{ 
    $('.mandatory').each(function{ 
     if($(this).val() == ""){ 
      alert($(this).attr("name") + "required"); 
          //or you can use id or any attrib 
      return false; 
     } 
    }) 
} 

참고 코드는 다음 작동하지 않은 경우 나이 하나를 시도

+0

나는 변수가 문자열 일 수 있다고 생각하고 여전히 작동합니까? 이 문제를 어떻게 해결해야합니까? – AKor

+0

@Andrei가 Jao 대답이나 Marek'answer를 확인합니다. 반드시 작동해야합니다. –

1

을 알고, 테스트하지 작동하지 않을 수 있습니다 이드 야. 나는 당신이 성취하려고 애쓰는 것이 무엇인지 확신하지 못합니다. 필드 흐림 옵션에 대한

트리거 :

$('input[type=text][class=classForMandatoryFields]').blur(function(){ 
if (mandatoryField(this.id)) { 
    alert('Field:' + this.id + ' is mandatory!') 
} 
}); 
+0

# input_1이라는 텍스트 입력 요소에 무언가가 입력되면 테스트 할 것입니다. – AKor

+0

스크립트를 편집 했으므로 효과가 있습니다. 그것을 시도하고 알려주세요. 또한 조금 더 많은 정보를 제공해 주시면이 양식을 양식 제출이나 현장 휴무 이벤트 (예 : 흐림)에서 확인하는 등 더 쉽고 빠를 수 있습니다. 자세한 정보는 다음에서 찾을 수 있습니다. http://api.jquery.com/blur/ –

+0

가장 최근에 수정 한 내용이 여전히 작동하지 않습니다. 내 질문을 최신 코드로 업데이트했습니다. – AKor

1

업데이트 코드에 너무 :

function mandatoryField(manF) 
{ 
    var fieldId = $("#" + manF).val(); 
    if(fieldId == "") 
    { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

다음 다시 시도하십시오.

+0

이 질문에 설명 된 것과 같은 방식으로 이것은 작동하지 않습니다. – AKor

0

당신이 시도 할 수 : 코드의

var fieldId = manF.val(); 

mandatoryField($("element_1")); 
1

두 조각이 셀렉터가 인수로 전달하거나 직접 $에 문자로 제공 여부 같은 관계없이 작동합니다. 또한, 대신 if..else의, 당신은 당신의 선택의 문제 외에도

function mandatoryField(manF) { 
    var fieldId = $(manF).val(); 
    return fieldId != ""; 
} 
0

을 할 수있는, 당신은 다음과 같이 함수를 다시 작성할 수 :

function mandatoryField(manF){ 
    return $(manF).val().length; 
} 

이것은, 자바 스크립트에서 모든 진실 또는 거짓 의미를 가지고 있기 때문에 . 숫자의 경우 0은 거짓입니다.

는 편집 :

내 시험은 잘 작동합니다 :

function mandatoryField(manF){ 
    return $(manF).val().length; 
} 

(...) 

<input id="test" value=""/> 
<input type="button" value="dd" onClick="alert('length: ' + (mandatoryField('#test'))"/>