如何捕获用户自己进行的下拉菜单手动更改?

时间:2019-06-13 14:23:07

标签: javascript jquery select onchange

我如何才能捕获用户本身所做的下拉列表更改,而不是在加载页面并将默认值分配给该下拉列表时捕获?

我尝试使用e.originalEvent,但无法正常工作。

$(self.options.selectChange).change(function (e){
   // check if the change event is a user-triggered event
   if (e.originalEvent) {
      ...
   }
});

我有一个包含很多下拉菜单的表单,每个表单都有一个默认值,该默认值是在页面加载时设置的。该操作被视为下拉菜单,触发了上面的代码,但是我只想在用户手动更改选项时才触发上面的代码。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

您正在搜索event.isTrigger

$('select').change(function(e) {
  console.log(e.isTrigger ? 'triggered' : 'manual')
})

$('button').click(function(e) {
  $('select').trigger('change')
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<select>
  <option>a</option>
  <option>b</option>
</select>

<button>Trigger</button>

答案 1 :(得分:0)

我认为更好的方法是标记您的处理程序。使用const customHandler = (label) => { if (typeof label !== 'string') { label = 'defaultLabel'; } return (jQueryEvent, customData) => { let customLabel = customData ? customData.name : label; let jqElem = $(jQueryEvent.currentTarget); // you can use IF statements here based on your customLabel value console.log('this element was triggered by', customLabel); } } $("select").on('change', customHandler('changedByUser')); const customTrigger = (label) => () => { $("select").trigger('change', { name: label || 'pageload' }) } window.onload = customTrigger(); setTimeout(customTrigger('this-timeout'), 2000)参数创建自定义函数。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select>
  <option>option 1</option>
  <option>option 2</option>
  <option>option 3</option>
  <option>option 4</option>
</select>

<br />
<div id="output"></div>
/home/karol/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++ -mfloat-abi=hard --sysroot=/home/karol/raspi/sysroot -Wl,--no-undefined -Wl,--version-script,QtGui.version -Wl,-O1 -Wl,--enable-new-dtags -Wl,-z,origin -Wl,-rpath,\$ORIGIN -Wl,-rpath-link,/home/karol/raspi/sysroot/opt/vc/lib -Wl,-rpath-link,/home/karol/raspi/sysroot/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,/home/karol/raspi/sysroot/lib/arm-linux-gnueabihf -shared -Wl,-soname,libQt5Gui.so.5 -o libQt5Gui.so.5.12.3 .obj/pixman-arm-neon-asm.o .obj/qdrawhelper_neon_asm.o .obj/qimage_compat.o .obj/qaccessible.o .obj/qaccessiblecache.o .obj/qaccessibleobject.o .obj/qaccessibleplugin.o .obj/qplatformaccessibility.o .obj/qaccessiblebridge.o .obj/qgenericpluginfactory.o .obj/qgenericplugin.o .obj/qwindowsysteminterface.o .obj/qplatforminputcontextfactory.o .obj/qplatforminputcontextplugin.o .obj/qplatforminputcontext.o .obj/qplatformintegration.o .obj/qplatformscreen.o .obj/qplatformintegrationfactory.o .obj/qplatformintegrationplugin.o .obj/qplatformtheme.o .obj/qplatformthemefactory.o .obj/qplatformthemeplugin.o .obj/qplatformwindow.o .obj/qplatformoffscreensurface.o .obj/qplatformcursor.o .obj/qplatformclipboard.o .obj/qplatformnativeinterface.o .obj/qsessionmanager.o .obj/qsurfaceformat.o .obj/qguiapplication.o .obj/qwindow.o .obj/qoffscreensurface.o .obj/qplatformsurface.o .obj/qsurface.o .obj/qclipboard.o .obj/qcursor.o .obj/qevent.o .obj/qinputmethod.o .obj/qinternalmimedata.o .obj/qkeysequence.o .obj/qkeymapper.o .obj/qpalette.o .obj/qguivariant.o .obj/qscreen.o .obj/qshortcutmap.o .obj/qstylehints.o .obj/qtouchdevice.o .obj/qplatformsharedgraphicscache.o .obj/qplatformdialoghelper.o .obj/qplatformservices.o .obj/qplatformsystemtrayicon.o .obj/qplatformsessionmanager.o .obj/qplatformmenu.o .obj/qpixelformat.o .obj/qpaintdevicewindow.o .obj/qrasterwindow.o .obj/qplatformgraphicsbuffer.o .obj/qplatformgraphicsbufferhelper.o .obj/qinputdevicemanager.o .obj/qhighdpiscaling.o .obj/qtestsupport_gui.o .obj/qdnd.o .obj/qdrag.o .obj/qplatformdrag.o .obj/qshapedpixmapdndwindow.o .obj/qsimpledrag.o .obj/qplatformopenglcontext.o .obj/qopenglcontext.o .obj/qopenglwindow.o .obj/qbitmap.o .obj/qimage.o .obj/qimage_conversions.o .obj/qimageiohandler.o .obj/qimagereader.o .obj/qimagereaderwriterhelpers.o .obj/qimagewriter.o .obj/qpaintengine_pic.o .obj/qpicture.o .obj/qpictureformatplugin.o .obj/qpixmap.o .obj/qpixmapcache.o .obj/qplatformpixmap.o .obj/qpixmap_raster.o .obj/qpixmap_blitter.o .obj/qimagepixmapcleanuphooks.o .obj/qicon.o .obj/qiconloader.o .obj/qiconengine.o .obj/qiconengineplugin.o .obj/qmovie.o .obj/qbmphandler.o .obj/qppmhandler.o .obj/qxbmhandler.o .obj/qxpmhandler.o .obj/qpnghandler.o .obj/qfont.o .obj/qfontengine.o .obj/qfontengineglyphcache.o .obj/qfontsubset.o .obj/qfontmetrics.o .obj/qfontdatabase.o .obj/qtextengine.o .obj/qtextlayout.o .obj/qtextformat.o .obj/qtextobject.o .obj/qtextoption.o .obj/qfragmentmap.o .obj/qtextdocument.o .obj/qtextdocument_p.o .obj/qtexthtmlparser.o .obj/qabstracttextdocumentlayout.o .obj/qtextdocumentlayout.o .obj/qtextcursor.o .obj/qtextdocumentfragment.o .obj/qtextimagehandler.o .obj/qtexttable.o .obj/qtextlist.o .obj/qtextdocumentwriter.o .obj/qsyntaxhighlighter.o .obj/qstatictext.o .obj/qrawfont.o .obj/qglyphrun.o .obj/qdistancefield.o .obj/qinputcontrol.o .obj/qfontengine_qpf2.o .obj/qplatformfontdatabase.o .obj/qharfbuzzng.o .obj/qtextodfwriter.o .obj/qzip.o .obj/qcssparser.o .obj/qbackingstore.o .obj/qbezier.o .obj/qblendfunctions.o .obj/qblittable.o .obj/qbrush.o .obj/qcolor.o .obj/qcolorprofile.o .obj/qcompositionfunctions.o .obj/qcosmeticstroker.o .obj/qdrawhelper.o .obj/qemulationpaintengine.o .obj/qgrayraster.o .obj/qimagescale.o .obj/qmatrix.o .obj/qmemrotate.o .obj/qoutlinemapper.o .obj/qpagedpaintdevice.o .obj/qpagelayout.o .obj/qpagesize.o .obj/qpaintdevice.o .obj/qpaintengine.o .obj/qpaintengineex.o .obj/qpaintengine_blitter.o .obj/qpaintengine_raster.o .obj/qpainter.o .obj/qpainterpath.o .obj/qpathclipper.o .obj/qpdf.o .obj/qpdfwriter.o .obj/qpen.o .obj/qpolygon.o .obj/qrasterizer.o .obj/qregion.o .obj/qstroker.o .obj/qtextureglyphcache.o .obj/qtransform.o .obj/qtriangulatingstroker.o .obj/qtriangulator.o .obj/qplatformbackingstore.o .obj/qpathsimplifier.o .obj/qcssutil.o .obj/qdesktopservices.o .obj/qvalidator.o .obj/qgridlayoutengine.o .obj/qabstractlayoutstyleinfo.o .obj/qlayoutpolicy.o .obj/qshaderformat.o .obj/qshadergenerator.o .obj/qshadergraph.o .obj/qshadergraphloader.o .obj/qshaderlanguage.o .obj/qshadernode.o .obj/qshadernodeport.o .obj/qshadernodesloader.o .obj/qtexturefiledata.o .obj/qtexturefilereader.o .obj/qpkmhandler.o .obj/qktxhandler.o .obj/qgenericmatrix.o .obj/qmatrix4x4.o .obj/qquaternion.o .obj/qvector2d.o .obj/qvector3d.o .obj/qvector4d.o .obj/qopengl.o .obj/qopenglfunctions.o .obj/qopenglframebufferobject.o .obj/qopenglpaintdevice.o .obj/qopenglbuffer.o .obj/qopenglshaderprogram.o .obj/qopenglgradientcache.o .obj/qopengltexturecache.o .obj/qopenglengineshadermanager.o .obj/qopengl2pexvertexarray.o .obj/qopenglpaintengine.o .obj/qopenglcustomshaderstage.o .obj/qopengltextureglyphcache.o .obj/qopenglversionfunctions.o .obj/qopenglversionfunctionsfactory.o .obj/qopenglvertexarrayobject.o .obj/qopengldebug.o .obj/qopengltextureblitter.o .obj/qopengltexture.o .obj/qopengltexturehelper.o .obj/qopengltextureuploader.o .obj/qopenglpixeltransferoptions.o .obj/qopenglprogrambinarycache.o .obj/qopenglfunctions_es2.o .obj/qguivariantanimation.o .obj/qstandarditemmodel.o .obj/qimage_neon.o .obj/qdrawhelper_neon.o .obj/qimagescale_neon.o .obj/qrc_qpdf.o .obj/qrc_qmake_webgradients.o .obj/moc_qaccessible.o .obj/moc_qaccessiblecache_p.o .obj/moc_qaccessibleplugin.o .obj/moc_qaccessiblebridge.o .obj/moc_qgenericplugin.o .obj/moc_qplatforminputcontext.o .obj/moc_qplatforminputcontextplugin_p.o .obj/moc_qplatformintegrationplugin.o .obj/moc_qplatformthemeplugin.o .obj/moc_qplatformnativeinterface.o .obj/moc_qplatformmenu.o .obj/moc_qsurfaceformat.o .obj/moc_qoffscreensurface.o .obj/moc_qsurface.o .obj/moc_qclipboard.o .obj/moc_qevent.o .obj/moc_qinternalmimedata_p.o .obj/moc_qkeysequence.o .obj/moc_qkeymapper_p.o .obj/moc_qpalette.o .obj/moc_qsessionmanager.o .obj/moc_qscreen.o .obj/moc_qstylehints.o .obj/moc_qtouchdevice.o .obj/moc_qplatformsharedgraphicscache.o .obj/moc_qplatformdialoghelper.o .obj/moc_qpaintdevicewindow.o .obj/moc_qrasterwindow.o .obj/moc_qplatformgraphicsbuffer.o .obj/moc_qinputdevicemanager_p.o .obj/moc_qdnd_p.o .obj/moc_qdrag.o .obj/moc_qshapedpixmapdndwindow_p.o .obj/moc_qopenglwindow.o .obj/moc_qimage.o .obj/moc_qimageiohandler.o .obj/moc_qpictureformatplugin.o .obj/moc_qiconengineplugin.o .obj/moc_qfont.o .obj/moc_qfontdatabase.o .obj/moc_qtextformat.o .obj/moc_qtextobject.o .obj/moc_qtextdocument.o .obj/moc_qtextimagehandler_p.o .obj/moc_qtexttable.o .obj/moc_qtextlist.o .obj/moc_qinputcontrol_p.o .obj/moc_qbrush.o .obj/moc_qpainter.o .obj/moc_qpdfwriter.o .obj/moc_qplatformbackingstore.o .obj/moc_qvalidator.o .obj/moc_qshaderlanguage_p.o .obj/moc_qopenglshaderprogram.o .obj/moc_qopenglengineshadermanager_p.o .obj/moc_qopengltexture.o  -L/home/karol/raspi/sysroot/opt/vc/lib -L/home/karol/raspi/qt-5.12.3/qtbase/lib -lQt5Core -lpthread /home/karol/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libGLESv2.so /home/karol/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libpng16.so /home/karol/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libz.so /home/karol/raspi/sysroot/usr/lib/arm-linux-gnueabihf/libharfbuzz.so   
make[3]: Wejście do katalogu '/home/karol/raspi/qt-5.12.3/qtbase/src/network'
make[3]: Nie ma nic do zrobienia w 'first'.
make[3]: Opuszczenie katalogu '/home/karol/raspi/qt-5.12.3/qtbase/src/network'
.obj/qharfbuzzng.o: In function `hb_qt_font_get_for_engine(QFontEngine*)':
qharfbuzzng.cpp:(.text+0x11b8): undefined reference to `hb_font_set_ptem'
collect2: error: ld returned 1 exit status
Makefile:1339: recipe for target '../../lib/libQt5Gui.so.5.12.3' failed
make[3]: *** [../../lib/libQt5Gui.so.5.12.3] Error 1
make[3]: Opuszczenie katalogu '/home/karol/raspi/qt-5.12.3/qtbase/src/gui'
Makefile:529: recipe for target 'sub-gui-make_first' failed
make[2]: *** [sub-gui-make_first] Error 2
make[2]: Opuszczenie katalogu '/home/karol/raspi/qt-5.12.3/qtbase/src'
Makefile:50: recipe for target 'sub-src-make_first' failed
make[1]: *** [sub-src-make_first] Error 2
make[1]: Opuszczenie katalogu '/home/karol/raspi/qt-5.12.3/qtbase'
Makefile:72: recipe for target 'module-qtbase-make_first' failed
make: *** [module-qtbase-make_first] Error 2