SORU
29 Mayıs 2009, Cuma


Nasıl varsayılan bir HTML Formu tespit gönder düğmesi.

Eğer bir form, ancak herhangi bir özel düğme tarafından gönderilen gibi

  • basarakGirin
  • HTMLFormElement.submit() JS kullanarak

nasıl bir tarayıcı varsa gönder düğmeleri belirlemek gerekiyordu, bir Pres gibi kullanmak için mi?

Bu iki seviye önemli

  • onclick bir olay işleyicisi için ilişikte gönder butonuna
  • verileri web sunucusuna geri gönderilir

Benim deneyler şimdiye kadar göstermiştir:

  • basıldığındaGirinFirefox, Opera ve Safari ilk formdaki Gönder düğmesini kullanın
  • basıldığındaGirinYANİ kullanan da ilk düğme veya hiçbiri gönderin koşullarına bağlı olarak, en anlamaya mümkün olmamıştır
  • tüm bu tarayıcılar Hiç Yok bir JS göndermek için kullanın

Standart ne diyor?

Eğer faydası olacaksa, işte benim test kodu (PHP sadece soruma kendisi için test yöntemi için geçerli değildir)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
</head>

<body>

<h1>Get</h1>
<dl>
<?php foreach ($_GET as $k => $v) echo "<dt>$k</dt><dd>$v</dd>"; ?>
</dl>

<h1>Post</h1>
<dl>
<?php foreach ($_POST as $k => $v) echo "<dt>$k</dt><dd>$v</dd>"; ?>
</dl>

<form name="theForm" method="<?php echo isset($_GET['method']) ? $_GET['method'] : 'get'; ?>" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>">
    <input type="text" name="method" />
    <input type="submit" name="action" value="Button 1" onclick="alert('Button 1'); return true" />
    <input type="text" name="stuff" />
    <input type="submit" name="action" value="Button 2" onclick="alert('Button 2'); return true" />
    <input type="button" value="submit" onclick="document.theForm.submit();" />
</form>

</body></html>

CEVAP
29 Mayıs 2009, Cuma


Eğer Javascript (yani formElement.submit() ya da bir şey eşdeğer) şeklinde gönderirseniz, o zamanyokdüğmeler başarılı sayılırlar gönder ve değerlerine hiçbiri gönderilen veri dahil edilmiştir. (Not: Eğer gönderdiğiniz formu kullanarak submitElement.click() sonra gönder o sana bir referans olarak kabul edilir etkin; bu pek düşme altında görev sorunuza beri burada gönder butonuna olduğu kesin ama ben dedim vardır bunun için insanlar kim okudu ilk bölümü ve merak ediyorum Nasıl Bir gönder düğmesi ile başarılı JS form gönderme. Elbette, formun onsubmit işleyicileri hala o da başka bir alemdir yani... bu şekilde olmaz ise form.submit()) yangın)

Eğer formu olmayan bir button alanda iken Enter tuşuna basma ile gönderilirse, o zaman aslında kullanıcı aracı için buraya istediğine karar vermek. specs hiçbir şey söyleme hakkında gönderme formu kullanarak enter tuşuna süredir bir metin giriş alanı (eğer sekme için bir düğme ve aktif kullanarak uzay ya da her neyse, o zaman sorun yok gibi, belirli bir gönder düğmesi olduğunu açıkça kullanılan). O kadar güzel bir form düğmesi aktif gönderdiğinde teslim edilmelidir, hatta örneğin bir metin giriş enter tuşuna basma formu göndermek için bir gereklilik değil.

İnanıyorum ki Internet Explorer seçtiği gönder düğmesi görünür ilk kaynak; ben kötü bir his var, Firefox ve Opera seçme düğmesi ile en düşük makale, çekiliyoruz ilk tanımlanmışsa başka bir şey tanımlanmış. Ayrıca bazı komplikasyonlar varsayılan olmayan bir değer IIRC özniteliği gönderir olmadığına ilişkin var.

Noktasına götürmek olduğunu yok tanımlı standart için ne olur burada ve tamamen de kapris tarayıcı - bu yüzden mümkün olduğunca her yaptığını, kaçının dayanarak belirli bir davranış. Eğer sen gerçekten gerekir biliyorum, muhtemelen öğrenmek davranışları farklı tarayıcı sürümleri, ama zaman araştırdım bu bir süre önce vardı bazı oldukça karmaşık koşullar (ders tabidir değişikliği ile yeni tarayıcı sürümleri) ve öneririm sana bunu önlemek için, mümkünse!

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BenjiManTV

    BenjiManTV

    20 Mart 2011
  • Canal TekZoom

    Canal TekZoo

    1 NİSAN 2012
  • PomplamooseMusic

    PomplamooseM

    28 HAZİRAN 2008