我有一个带有默认选项Select an option
的html select元素,当我点击其他元素时,我试图更改它,例如:我有一个值为{{1}的按钮},如果我点击这个元素我想搜索我的选择选项上是否存在该文本,我使用包含 jQuery方法执行此操作并且似乎有效,问题是我可以有多个带有文字的元素,我不知道我的代码有什么问题,但似乎只是第一次工作。这是我的问题的一个例子:
两个按钮,我点击第一个按钮,工作正常,然后我点击第二个也工作,但然后我再次点击第一个不起作用!
另外,我想创建一个重置选项,为此我使用MyText select option
但不起作用。
这是我的示例代码:
.prop('selectedIndex', 0)

$('.btn').click(function() {
var value = $(this).val();
$('#Sel option:contains(' + value + ')').attr("selected", true);
});
$('.btn2').click(function() {
$('#Sel').prop('selectedIndex', 0);
});

PD:如果有一个选项可以通过点击输入类型=&#34来重置所有输入(选择,文本,数字等);重置"这可能是我的重置问题的解决方案,因为我也试过点击重置输入(window.MyForm.reset()),但我的最后一个选择的选项没有重置。
答案 0 :(得分:2)
如果您检查文本并使用相同的功能更改public class songs_list extends Fragment {
// Adapter that exposes data from a Cursor to a ListView widget.
private songs_list.MediaCursorAdapter mediaAdapter = null;
private String currentFile="";
private boolean isStarted = true;
private TextView selelctedFile = null;
private View v=null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Use cursor to get data from external resource
Cursor cursor = getActivity().getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
// check Cursor has data or not
if (null != cursor) {
cursor.moveToFirst();
mediaAdapter = new MediaCursorAdapter(getActivity().getApplicationContext(), R.layout.list_layout, cursor);
v=inflater.inflate(R.layout.fragment_songs_list, container, false);
// TextView title = (TextView) view.findViewById(R.id.title);
ListView lv = (ListView)v.findViewById(android.R.id.list);
lv.setAdapter(mediaAdapter);
}
// Inflate the layout for this fragment
return v;
}
MediaPlayer player = new MediaPlayer();
//MediaCursorAdapter class construction (what to show )
private class MediaCursorAdapter extends SimpleCursorAdapter {
public MediaCursorAdapter(Context context, int layout, Cursor c) {
super(context, layout, c,
new String[]{MediaStore.Audio.Albums.ALBUM_ID, MediaStore.MediaColumns.TITLE, MediaStore.EXTRA_MEDIA_ARTIST, MediaStore.Audio.AudioColumns.DURATION},
new int[]{R.id.icon, R.id.title, R.id.artistname, R.id.duration});
}
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView title = (TextView) view.findViewById(R.id.title);
ImageView img = (ImageView) view.findViewById(R.id.icon);
TextView name = (TextView) view.findViewById(R.id.artistname);
TextView duration = (TextView) view.findViewById(R.id.duration);
// icon
long albumid = Long.parseLong((cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Albums.ALBUM_ID))));
Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");
Uri uri = ContentUris.withAppendedId(sArtworkUri, albumid);
ContentResolver res = context.getContentResolver();
InputStream in = null;
try {
in = res.openInputStream(uri);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Bitmap artwork = BitmapFactory.decodeStream(in);
img.setImageBitmap(artwork);
title.setText(cursor.getString(
cursor.getColumnIndex(MediaStore.MediaColumns.TITLE)));
name.setText(cursor.getString(
cursor.getColumnIndex(MediaStore.EXTRA_MEDIA_ARTIST)));
long durationInMs = Long.parseLong(cursor.getString(
cursor.getColumnIndex(MediaStore.Audio.AudioColumns.DURATION)));
double durationInMin = ((double) durationInMs / 1000.0) / 60.0;
durationInMin = new BigDecimal(Double.toString(durationInMin)).setScale(2, BigDecimal.ROUND_UP).doubleValue();
duration.setText("" + durationInMin);
view.setTag(cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA)));
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.list_layout, parent, false);
bindView(v, context, cursor);
return v;
}
}
}
标记的值,则可以完美地执行您想要的操作。
select
$('.btn').click(function() {
var val = $(this).val();
$('#Sel option').each(function(index){
if($(this).text() == val)
$('#Sel').prop('selectedIndex', index);
});
});
$('.btn2').click(function() {
$('#Sel').prop('selectedIndex', 0);
});
答案 1 :(得分:1)
不是在选项中添加selected
属性,而是设置selected
属性。这会强制浏览器取消选择所有其他选定的选项(如果列表不是<select multiple>
)。
$('.btn').click(function() {
var value = $(this).val();
$('#Sel option:contains(' + value + ')').prop("selected", true);
});
或者,您可以阅读index
属性并在列表中设置selectedIndex
,这是IMO更明确的行为。
$('.btn').click(function() {
var value = $(this).val();
var index = $('#Sel option:contains(' + value + ')').prop("index");
$('#Sel').prop('selectedIndex', index);
});
此外,重置表单时,disabled
第一个选项可能会在某些浏览器中造成问题。
答案 2 :(得分:0)
在按钮中使用实际值更简单,然后只需在选择
上使用val()
<button value="1" class="btn">Button 1</button>
<button value="2" class="btn">Button 2</button>
<button value="0" class="btn">Reset</button>
然后一个听众会为所有3个
工作$('.btn').click(function() {
$('#Sel').val($(this).val());
});
至于清除所有其他输入,只需将值设置为空字符串
$(':input').not('select').val('')
答案 3 :(得分:0)
不要对选项值感到困惑...并且设置选择器的值并不会留下任何杂散清理,你必须手动设置attrs。
DialogFragment