2011-07-28 17 views
-1

私は自分のjqueryプラグインをやっています。 は、このコードを見て:jqueryコードはIEでは動作しますが、Firefox/Chromeでは動作しません。

<!DOCTYPE html> 
<html> 
<head> 
    `<script type="text/Javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js"></script>` 
    <script type="text/javascript"> 
     // My plugin 
     (function($) { 
      $.html5 = { 
       form: function() { 
        select = $('input'); 
        $("input#number").after('<input type="button" id="step-up" value="U"><input type="button" id="step-down" value="D">'); 

        $('input').bind('click', function(e){ 
         if($(e.target).is("#step-up")){ 
          $.html5.selector('min'); 
          steps = parseInt(selector.attr('step')); 
          min = parseInt(selector.attr('min')); 
          max = parseInt(selector.attr('max')); 
          val = parseInt(selector.attr('value')); 
          if (val < max){ 
           selector.val(val + steps); 
          } 
         } 
         if($(e.target).is("#step-down")){ 
          $.html5.selector('min'); 
          steps = parseInt(selector.attr('step')); 
          min = parseInt(selector.attr('min')); 
          max = parseInt(selector.attr('max')); 
          val = parseInt(selector.attr('value')); 
          if (val > min){ 
           selector.val(val - steps); 
          } 
         } 
        }); 

        increment = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 
        $.each(increment, function(index){ 
         selector = $('input[placeholder]:eq(' + index + ')'); 
         placeholder = selector.attr('placeholder'); 
         selector.val(placeholder); 
        }); 

        $(select).bind('focus', function(){ 
         index = $(select).index(this); 

         // Placeholder 
         selector = $('input[placeholder]:eq(' + index + ')'); 
         placeholder = selector.attr('placeholder'); 
         if (selector.val() == placeholder) 
         { 
          selector.val(''); 
         } 

         // Required 
         $('*').remove('.error'); 

         //Min Max 

        }); 

        $(select).bind('blur', function(){ 
         index = $(select).index(this); 

         // Placeholder 
         selector = $('input[placeholder]:eq(' + index + ')'); 
         placeholder = selector.attr('placeholder'); 
         if (placeholder != selector.val() && selector.val() == '') 
         { 
          $(selector).val(placeholder); 
         } 

         // Required 
         $.html5.selector('required'); 
         required = selector.attr('required'); 
         if(required == 'required' && selector.val() == placeholder) 
         { 
          $(this + ':submit').attr('disabled','disabled'); 
          $(this).after('<div class="error" style="border: 1px solid;">Required</div>'); 
         } 
         else 
         { 
          $(this + ':submit').removeAttr('disabled'); 
          $('*').remove('.error'); 
         } 

         // Min Max 
         $.html5.selector('min'); 
         min = selector.attr('min'); 
         max = selector.attr('max'); 
         val = parseInt(selector.val()); 
         if(val > max) { 
          selector.val(max); 
         } 
         else if(val < min) { 
          selector.val(min); 
         } 
        }); 
       }, 
       selector: function(attr){ 
        select = $('input'); 
        attrib = $('input[' + attr + ']'); 
        index = $(attrib).index(select); 
        selector = $('input[' + attr + ']:eq(' + index + ')'); 
        return selector; 
       } 
      }, 
      form = function() { 
       $.html5.form(); 
      } 
     })(jQuery); 

     // Call to my plugin 
     $(document).ready(function() { 
      form(); 
     }); 
    `</script>` 
`</head>` 
`<body>` 
    `<form id="form" method="post" action="http://localhost/html5/">` 
     `<input type="text" name="item" value="" placeholder="Enter text here." required="required" />` 
     `<input type="number" name="number" min="5" max="10" step="1" value="" placeholder="Number here" id="number" />` 
     `<input type="submit" value="Submit">` 
    </form> 
</body> 
</html> 

私のプラグインは、HTML5のような入力filedsで「最小」「最大」と「ステップ」などのパラメータを受け入れますが、私の問題は、Internet Explorerで私のプラグインが正常に動作しているということですFirefox/Chromeでは表示されません。 IEの "min"や "max"のような変数の値を取得するが、chromeではなく、html5のようなtype = "number"入力フィールドの最小値と最大値を定義することはできません。 助けてください。

+1

問題の詳細を教えてください。 –

+0

...地球規模の汚染...一つの 'var'はありません。https://developer.mozilla.org/ja/JavaScript/Reference/Statements/var –

+0

@ gaby ..変数の前に単語 "var"を入れる。事実上必要ない。 –

答えて

2

暗闇の中で一気に - e.targetの使用はブラウザ固有のものだと思うので、代わりにe.srcElementを試してみてください。

+0

nope .. 'target'はjQueryによって正規化されるプロパティの1つです.. http://api.jquery.com/category/events/event-object/ –