Bir ya da diğer doğrulama

5 Cevap php

Ben bir alan veya diğer dolu ise bana (, şok edici, yeterince denilen oneortheother) doğrulamak sağlayan bir javascript işlevi yarattık. Esasen, bu dolu ne denetler, ya da her ikisi, ve bir hata atar.

Doğrulanan alanlardan biri input type="file" alveır. Onlar istediğiniz dosya ise kullanıcılar görebilir böylece ben, alanın mevcut dosya aşağıda görüntüleniyor ediyorum.

Hala input type="file" bir değer kalmadan oneortheother üzerinden doğrulamak için herhangi bir yolu var mı? Javascript kveırmaca her türlü?

Ben bu noktada fikir sonunda kulüpler ve bu işlevi ihtiyacı sonra bugün bir demo var, bu yüzden herhangi bir yardım büyük mutluluk duyacağız.

EDIT:

İstendiği gibi, burada bazı örnekler var:

<label for="pdf">Upload PDF:
<span class="fieldnote">Files of type .pdf</span>
</label>
<input type="file" name="pdf" id="pdf" class="external_form_field oneortheother_url" value="/downloads/white_papers/HigherOrderPerl.pdf"  />
<label>Existing file:</label><span class="preview"><a href="/downloads/white_papers/HigherOrderPerl.pdf" target="_blank">HigherOrderPerl.pdf</a></span>
<label for="url">Link to asset:</label>
<input type="text" name="url" id="url" class="external_form_field oneortheother_pdf" value=""  size="25" />

Class oneortheother_url ve oneortheother_pdf uygulanır dikkat edin. Bu doğrulama rutin karşılaştırmak için hangi alan bilmesini sağlar. Karşılaştırma:

if (fObj.value && fObj2.value) { }

ve

if (!fObj.value && !fObj2.value) { }

5 Cevap

Ben senin doğrulama işlevi nasıl çalıştığını emin değilim, ama tarih önizleme dosyasının VEYA dosya giriş değerinin url tutan gizli bir girdi ekleyebilirsiniz gibi görünüyor. Sonra sadece gizli girişi ile url girişini karşılaştırabilirsiniz.

Ama bu sadece bir özel doğrulama işlevi yazmak gerekir olası görünüyor.

Ben ne yazık ki gerçek soruyu anlayamadık, ama burada bir kenar çubuğu ipucu:

XOR operatörü bu gibi durumlarda (belirsiz olsa da) kullanışlı gelebilir:

if (fObj.value ^ fObj2.value) {
    // Only one value is set, we're good
} else {
    // Both of them are set or neither of them are set
}

Ben benim için açık değil gibi ben tamamen sveyaunuzu anlamak emin değilim.

Bunu kontrol etmek istiyveyaum:

if (fObj.value && fObj2.value) {}

ve

if (!fObj.value && !fObj2.value) {}

Peki neden de bu eklemek değil ...

if (fObj.value && !fObj2.value) {}

veya

if (!fObj.value && fObj2.value) {}

Ne her seçeneğin yanındaki bir radyo düğmesi ekleyerek, ve seçilen radyo düğmesi kullanılır hangi seçeneği belirlemek için izin dersiniz?

Burada yapmaya çalıştığımız tam olarak ne olduğundan emin değilim, ama bir gizli form alanı ekleyebilir, daha sonra dosya girişi ve URL girişlerine 'onchange olayları hem bir işlev eklemeyi, o kuracak Bu değere gizli alan.

Temelde ben şu anda alıyorsun yaklaşım uygun olduğundan bile emin değilim - Firefox 3, örneğin, bir dosya alanının içeriğini düzenlemek izin vermez, doğrudan ve bildiğim kadarıyla söyleyebilirim size "hayır yol verir kurulmamış "bir değer. Yani bir kez dosya seçildi, "pdf" input always "url" giriş kalıcı etkili devre dışı olduğu anlamına gelir ayarladığınız kısıtlamaları ile (ki ben onları anlamak gibi), null olmayan olacaktır . Hiç boş / boş dize asla böylece dosya giriş bir başlangıç ​​değeri vermek çünkü bu daha da kötüdür.

Sen bir adım geri almak ve başarmak için çalışıyoruz hakkında tam olarak ne ve alternatif bir yöntem daha iyi olabilir mi düşünmek gerekebilir. Örneğin, bir radyo düğmesi devre dışı bırakır ve uygun alanları sağlayan dosya yükleme kutusu veya bir URL kaynak arasında seçim yapmak.

Ayrıca, burada çoğu insan bile bir düzenlemeden sonra soruyorsun oldukça ne anlamadı ki aslında çok kolay değil bu konuda bir şey olduğunu bir göstergesidir ve bu ima gelecekte bu kodu korumak gerekir insanlar olabilir benzer bir şey geçmesi. Yine, tasarım üstlenmeden için muhtemelen, ya da belki de açıklayıcı yorumların bir demet jsut.