2013-07-18 48 views
0

我打算做一个选择选项并输入文本框来取值并收集一些数字。jQuery函数当选择框值的onchange添加属性禁用输入[文字],

我需要做的是 - 如果我从选择框中选择一个值,文本框应该被禁用。当我在文本框中输入时应该会发生相反情况 - 选择框应该被禁用。

这里是我做过什么:

<select id="subject_items" name="subjectitems"> 
    <option value="none">Select</option> 
    <option value="1-10">1-10</option> 
    <option value="11-20">11-20</option> 
    <option value="20-50">20-50</option> 
    <option value="50+">50+</option> 
</select> 
<input type="text" name="txtsubitems" id="txtsubitems" placeholder="Or type exact number"/> 
<h4 id="showquote" class="formh4 text-center"></h4> 

<script> 

function multiplyVals(multiNum, firstNum, secondNum, addPhotoNum){ 
    var multiNum, multiNum, secondNum, addPhotoNum; 
    var multiFirst = multiNum*firstNum + addPhotoNum*5 +30; 
    var multisecond = multiNum*secondNum + addPhotoNum*5 +30; 
    return "From "+ " $"+multiFirst +" To "+ " $"+multisecond; 
}    

function multiplyVals50(multiNum, firstNum, addPhoto){ 
    var multiNum, multiNum, addPhoto; 
    var multiFirst = multiNum*firstNum + addPhoto*5 +30; 
    return " $"+multiFirst+"+"; 
    } 
function multiplyValsTxt(multiNum, firstNum, addPhoto){ 
    var multiNum, multiNum, addPhoto; 
    var multiFirst = multiNum*firstNum + addPhoto*5 +30; 
    return " $"+multiFirst; 
    } 
function displayVals() { 
    var numOfItem = $("#subject_items").val(); 
    var numOfitemSingle = $("#txtsubitems").val(); 
    var addPhoto = $("#add_photo").val(); 
    var $towVal = $('#subject_items'), $oneVal = $('#txtsubitems'); 

     if(numOfItem == '1-10'){ 
       $("#showquote").html(multiplyVals(16, 1, 10, addPhoto)); 
       $oneVal.attr('disabled', 'disabled').val(''); 
       } 
     else if(numOfItem == '11-20'){ 
       $("#showquote").html(multiplyVals(12, 11, 20, addPhoto)); 
       } 
     else if(numOfItem == '20-50'){ 
       $("#showquote").html(multiplyVals(9, 20, 50, addPhoto)); 
       } 
     else if(numOfItem == '50+'){ 
       $("#showquote").html(multiplyVals50(7, 50, addPhoto)); 
       } 
     else if(numOfitemSingle <=10){ 
       $("#showquote").html(multiplyValsTxt(16, numOfitemSingle, addPhoto)); 
       } 
     else if(numOfitemSingle <20){ 
       $("#showquote").html(multiplyValsTxt(12, numOfitemSingle, addPhoto)); 
       } 
     else if(numOfitemSingle <50){ 
       $("#showquote").html(multiplyValsTxt(9, numOfitemSingle, addPhoto)); 
       } 
     else if(numOfitemSingle >50){ 
       $("#showquote").html(multiplyValsTxt(7, numOfitemSingle, addPhoto)); 
       } 
     else {      
       $("#showquote").html("<P>Please Choose the number of subject items </P>");\ 
       $oneVal.removeAttr('disabled'); 
      }   
    }//End displayVals function 

$("select#subject_items").change(displayVals); 
      var qqqq = window.setInterval(function(){ 
      displayVals()},10 
      ); 
</script> 
+1

你的问题不清楚。你实际面临的是什么问题。我可以看到你只使用select change事件。您必须使用文本框的keyup或keydown事件来禁用选择框。 –

+0

我该怎么做,我尝试了很多方法,并不与我 –

+0

检查网站http://fahmynow.com/blue/ –

回答

4

更好的连接使用.on()

附加一个事件处理函数的一个或多个事件的 所选元素的事件处理程序。

(1)在改变SELECT,禁用文本框

$('#subject_items').on('change', function(){ 
$('#txtsubitems').attr("disabled", "disabled"); 
}); 

同样

(2)在改变INPUT,禁用选择

$('#txtsubitems').on('change', function(){ 
    $('#subject_items').attr("disabled", "disabled"); 
    }); 

我不能请检查这与您的网站,而这里是一个fiddle

更新:

从您的意见,

$('#subject_items').on('change', function() { 
    console.log($(this).val()); 
    if ($(this).val() !== 'none') { 
     $('#txtsubitems').prop("disabled", true); 
    } else { 
     $('#txtsubitems').prop("disabled", false); 
    } 
}); 

$('#txtsubitems').on('change', function() { 
    if ($(this).val() !== '') { 
     $('#subject_items').prop("disabled", true); 
    } else { 
     $('#subject_items').prop("disabled", false); 
    } 
}); 

UPDATED FIDDLE

希望你能理解。

+0

它是一个问题attr不会删除,如果我托盘选择没有值或我从文本框中删除值 –

+0

@ thehero75哦,当你做出选择没有,文本框应启用和viceversa输入。我对吗? – Praveen

+0

是的,这就是我的意思 –

相关问题