下午好,Stack Overflow,
我在编码方面缺乏经验,而且我遇到了一个问题,我正在努力!
如果你允许我设置场景......
我目前正在处理的项目部分涉及用户从仓库中挑选物品以完成装运,在某些情况下,他们必须从不同地点挑选相同的物品,当需要完成时,小“!”项目旁边会显示类型图标。
然后,用户可以点击图标并选择他们将从哪个位置检索库存,然后按模式上的确认,当它关闭时,它将文本设置为蓝色并隐藏图标。我遇到问题的部分是,一旦建立了所有位置,就需要处理订单,这需要点击一个按钮,我只希望在所有“!”后出现。图标被隐藏。
我知道有很多基于for循环和图像检查的问题并相信我,当我说我努力想弄清楚自己并且我尝试了不同的方法:
ShowProcess = false
for (i = 0; i<Picker; i++) {
if ($('#MultiLocIcon'+i).is(':visible')){
ShowProcess = true
}
if (ShowProcess == true) {
$('#ProcessConfirm').show()
};
};
这显然不起作用,因为它将列表中的第一个变量设置为“true”并始终将其读为true,因此始终显示图像,即使“!”图标仍然存在于其他行中。
我也尝试过使用.each()来测试特定的每一行文字颜色,但也没有运气:
var table = $('#RequestedItemsTable');
table.find('tbody > tr').each(function(){
if $('#Desc').css('color') == '#0000FF'){
//do something
我觉得我的经历让我感到沮丧,因为我还有很多需要学习的地方,并且怀疑这个解决方案会非常简单,但是如果你知道怎么做的话,那就很容易了。
如果有人可以花时间帮我解决这个问题或给我任何建议,我会非常感激。
以下是我的代码中可能有用的部分:
模态“确认”按钮:
//CONFIRM Button which will submit final picks.
'Confirm': function() {
//Reset the length loop
length = undefined;
//Remove "Multiple Location" icon from the row.
$('#icon'+id).hide();
//Change text colour back to blue to have visual confirmation that item is ready for picking
$('#Desc'+id).css('color', '#0000FF');
$('#QtyReq'+id).css('color', '#0000FF');
$('#QtyinStock'+id).css('color', '#0000FF');
$(this).dialog('close');
“!”图标:
<td id= "MultiLocIcon<?=$i;?>"><?if($row->Count_Location > 1)
{?><img src="<?=base_url();?>public/css/images/error.png" alt="LocPick" title="Multiple Locations" style="cursor: pointer;" id= "icon<?=$i;?>" onClick="$.LocPick(<?=$i;?>);"/><?}?></td>
基本上只需知道一旦循环检查我的图像如何显示并知道“!”每个可能的行都隐藏了图标。
感谢您的耐心等待。
答案 0 :(得分:1)
我要做的是根据您的HTML,选择所有警报图标,并在其上执行:visible伪造选择器。这将返回所有可见的警报图标,如果数组中没有,您知道它们都不可见。您需要使用类来识别它们,例如.alert:
if( $(".alert:visible").length === 0 ){
// Do your code in here for no visible alert icons!
}
答案 1 :(得分:1)
if (!isVideo(url)) {
videoView.setVisibility(View.GONE);
Picasso.with(this).load(imageUrl)
.into(imageView);
} else {
Uri uri = Uri.parse(url);
videoView.setVideoURI(uri);
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
imageView.setVisibility(View.GONE);
videoView.setBackgroundColor(Color.TRANSPARENT);
videoView.requestFocus();
videoView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// start your new activity to play video
return false;
}
});
}
});
}
添加到具有warning
&amp;的所有表格列中。然后检查相同的可见性。
warning icon
答案 2 :(得分:1)
您可能需要在模式逻辑中添加第二张支票,可能是在.hide()
之后:
//Remove "Multiple Location" icon from the row.
$('#icon'+id).hide();
$('img[id^=icon]:visible').length || $('#ProcessConfirm').show();
这样做会将:visible
伪选择器和所有img
标签的正则表达式选择器与id
组合,以&#34; icon&#34;开头。这假设您没有任何其他不相关的图片代码,其ID为&#34; icon *&#34;。如果长度为0,它将继续显示#ProcessConfirm元素。
答案 3 :(得分:1)
当用户点击模态确认时,您应该检查仍然可以看到多少个图标,如果金额为0,则显示按钮,如下所示:
// This searchs for every <td> with an id that contains '#MultiLocIcon'
// Then checks if the amount of those which are visible is 0 and do something
if ( $('td[id*=MultiLocIcon]').not(':visible').length === 0 ) {
$('#ProcessConfirm').show()
}