SORU
28 NİSAN 2009, Salı


Değer eğer test bir işlevdir

onsubmit bir form değerini bir fonksiyon olup olmadığını test etmek istiyorum. Biçimi genellikle onsubmit="return valid();". Bir yol varsa bu fonksiyon ise, ve eğer çağrı mı var? Sattığınız kullanarak bana pek bir faydası yok eden bir dize sadece verir.

EDİT: Elbette, anlıyorum, "geçerli () return;" bir dize. D indir replaceI "() geçerli;" bile "() geçerli". Eğer ikisi de bir işlevi olup olmadığını bilmek istiyorum.

EDİTBurada benim sorunum açıklamaya yardımcı olabilir hangi kodu:

$("a.button").parents("form").submit(function() {
    var submit_function = $("a.button").parents("form").attr("onsubmit");
    if ( submit_function && typeof( submit_function.replace(/return /,"") ) == 'function' ) {
        return eval(submit_function.replace(/return /,""));
    } else {
        alert("onSubmit is not a function.\n\nIs the script included?"); return false;
    }
} );

2 DÜZENLEYİNBurada yeni kodu. Ben hala bir değerlendirme, form arama çünkü kullanmak zorunda gibi görünüyor.() gönderme mevcut onsubmits ateş etmiyor.

var formObj = $("a.button").parents("form");
formObj.submit(function() {
    if ( formObj[0].onsubmit && typeof( formObj.onsubmit ) == 'function' ) {
        return eval(formObj.attr("onsubmit").replace(/return /,""));
    } else {
        alert("onSubmit is not a function.\n\nIs the script included?");
        return false;
    }
} );

Bu daha iyi yapmak için muhtemelen bir öneriniz var mı?

CEVAP
28 NİSAN 2009, Salı


Düğme ile gönder değiştiriyorum bağlantı çapa. Arama beri form.() gönderme değil etkinleştir onsubmit, onu buluyorum, ve ()eval ıng kendim. Ama istiyorum eğer işlevi önce olup olmadığını kontrol edin ()sadece eval orada ne ıng. – gms8994

<script type="text/javascript">
function onsubmitHandler() {
    alert('running onsubmit handler');
    return true;
}
function testOnsubmitAndSubmit(f) {
    if (typeof f.onsubmit === 'function') {
        // onsubmit is executable, test the return value
        if (f.onsubmit()) {
            // onsubmit returns true, submit the form
            f.submit();
        }
    }
}
</script>

<form name="theForm" onsubmit="return onsubmitHandler();">
<a href="#" onclick="
    testOnsubmitAndSubmit(document.forms['theForm']);
    return false;
"></a>
</form>

EDİT : işlev testOnsubmitAndSubmit eksik parametre f

Yukarıda ne olursa olsun onsubmit HTML özniteliği atarsınız, ister iş veya JavaScript atayın:

document.forms['theForm'].onsubmit = onsubmitHandler;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • jkimisyellow

    jkimisyellow

    6 Mayıs 2009
  • Max Lee

    Max Lee

    18 AĞUSTOS 2006
  • SerienTrailerMP

    SerienTraile

    7 HAZİRAN 2012