1

У меня есть выпадающее меню с различными вариантаминужно, чтобы скрыть выбранный элемент на основе условий

  • Новый
  • In Progress
  • Заказанный
  • Не Заказанный
  • Завершено
  • Отменено

У меня есть форма, которую мне нужно скрыть строку ETA, когда статус новый, затем включить его для любого другого состояния. Это то, что я пробовал:

var progress, ordered, unordered, completed, cancelled, reg, high, user, trimUser, etaDate, etaRow, etaHour, etaMinutes; 

function initiate() { 
    //declaring necessary variables 
    declaration() 
} 

function declaration(){ 
    //Declaration of variables for status changes 
    sNew = $("option[value='New']"); 
    progress = $("option[value='In Progress']"); 
    ordered = $("option[value='Ordered']"); 
    unordered = $("option[value='Unordered']"); 
    completed = $("option[value='Completed']"); 
    cancelled = $("option[value='Cancelled']"); 

    //Declaring variables for priority changes 
    reg = $('input[value="ctl00"]'); 
    high = $('input[value="ctl01"]'); 

    //Declaring current user using SPServices 
    user = $().SPServices.SPGetCurrentUser({ 
    fieldName: "Name", 
    debug: false 
    }); 

    //Declaring variables for ETA field manipulation 
    etaRow = $("nobr").filter(function() { return $.trim(this.childNodes[0].nodeValue) === "ETA"; }).closest("tr"); 
    etaDate = $('input[title="ETA"]'); 
    etaHour = $("[id$=DateTimeFieldDateHours]"); 
    etaMinutes = $("[id$=DateTimeFieldDateMinutes]"); 

} 

function hideETA(){ 
    //hide ETA options 
    etaRow.hide(); 

    if(sNew.not(:checked)){ 
     alert('CP1'); 
     eta.show(); 
    } 
} 

Так как я пытался сделать это с помощью изначально скрывая его (потому что новое значение по умолчанию), а затем, когда это ничего, кроме нового, показать его.

EDIT: Я думаю, что я это решил, что это, как я сделал это после того, как какой-то помощи @Richard с моим, если заявление и селекторы:

function setETA(){ 
    //Hide, Display and Disable ETA based on stages   
    if(sNew.is(":checked")){ 
     etaRow.hide(); 
    }else if (progress.is(":checked")){ 
     //do nothing, should be already showing 
    }else{ 
     etaDate.attr("readonly","true").css('background-color','#F6F6F6'); 
     etaHour.attr("disabled","disabled"); 
     etaMinutes.attr("disabled","disabled"); 
    } 
} 
+0

Просто сразу же, изменение 'если (sNew.not (: проверено))' в 'если (sNew.is (! ": Проверено"))'. Добавьте кавычки и используйте .is() ... – Richard

+0

Выполнено. Просто интересно, но что такое .not(), тогда я думал, что это то же самое – Batman

+0

Итак, каков ваш фактический HTML? –

ответ

0

2 возможности:

  • Дисплей = нет
  • Удалить из списка опций

Для метода отображения: http://jsfiddle.net/r7gLU/1/

// Hide the Option 
var opt = $('option[value=New]'); 
opt.css('display','none'); 
if(opt.parent().val() == 'New') 
    opt.next().attr("selected", "selected"); 

// Show the Option 
var opt = $('option[value=New]'); 
opt.css('display','');